@co0ontty/wand 1.21.11 → 1.21.13
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/server.js +294 -31
- package/dist/structured-session-manager.d.ts +6 -2
- package/dist/structured-session-manager.js +174 -97
- package/dist/types.d.ts +24 -0
- package/dist/web-ui/content/scripts.js +970 -211
- package/dist/web-ui/content/styles.css +812 -51
- package/package.json +1 -1
|
@@ -2522,6 +2522,14 @@
|
|
|
2522
2522
|
.topbar-more-item.topbar-more-item-danger { color: var(--danger); }
|
|
2523
2523
|
.topbar-more-item.topbar-more-item-danger:hover { background: var(--danger-muted); color: var(--danger-hover); }
|
|
2524
2524
|
.topbar-more-item.hidden { display: none; }
|
|
2525
|
+
.topbar-more-item[disabled] { opacity: 0.5; cursor: not-allowed; }
|
|
2526
|
+
.topbar-more-item[disabled]:hover { background: transparent; color: var(--text-primary); }
|
|
2527
|
+
.topbar-more-divider {
|
|
2528
|
+
height: 1px;
|
|
2529
|
+
margin: 4px 6px;
|
|
2530
|
+
background: var(--border-default);
|
|
2531
|
+
opacity: 0.6;
|
|
2532
|
+
}
|
|
2525
2533
|
|
|
2526
2534
|
/* 桌面端显示所有按钮 */
|
|
2527
2535
|
.terminal-scale-toggle { display: flex; }
|
|
@@ -9185,6 +9193,258 @@
|
|
|
9185
9193
|
|
|
9186
9194
|
/* .btn-success defined globally in the button system above */
|
|
9187
9195
|
|
|
9196
|
+
/* ── Update Card (richer than the generic notification bubble) ── */
|
|
9197
|
+
.notification-bubble.update-card {
|
|
9198
|
+
width: min(360px, calc(100vw - 24px));
|
|
9199
|
+
max-width: min(360px, calc(100vw - 24px));
|
|
9200
|
+
min-width: 0;
|
|
9201
|
+
padding: 14px 14px 12px;
|
|
9202
|
+
border-radius: var(--radius-md);
|
|
9203
|
+
background:
|
|
9204
|
+
radial-gradient(120% 120% at 0% 0%, var(--accent-muted) 0%, transparent 55%),
|
|
9205
|
+
linear-gradient(180deg, var(--bg-elevated) 0%, var(--bg-primary) 100%);
|
|
9206
|
+
border: 1px solid var(--border-strong);
|
|
9207
|
+
box-shadow: var(--shadow-xl), 0 0 0 1px rgba(255,255,255,0.4) inset;
|
|
9208
|
+
overflow: hidden;
|
|
9209
|
+
isolation: isolate;
|
|
9210
|
+
}
|
|
9211
|
+
.update-card-shine {
|
|
9212
|
+
position: absolute;
|
|
9213
|
+
inset: 0;
|
|
9214
|
+
pointer-events: none;
|
|
9215
|
+
background: linear-gradient(115deg,
|
|
9216
|
+
transparent 0%,
|
|
9217
|
+
rgba(255, 255, 255, 0.18) 45%,
|
|
9218
|
+
rgba(255, 255, 255, 0.32) 50%,
|
|
9219
|
+
rgba(255, 255, 255, 0.18) 55%,
|
|
9220
|
+
transparent 100%);
|
|
9221
|
+
background-size: 220% 100%;
|
|
9222
|
+
background-position: 120% 0;
|
|
9223
|
+
mix-blend-mode: overlay;
|
|
9224
|
+
opacity: 0.65;
|
|
9225
|
+
animation: update-card-shine 6s ease-in-out infinite;
|
|
9226
|
+
z-index: 0;
|
|
9227
|
+
}
|
|
9228
|
+
@keyframes update-card-shine {
|
|
9229
|
+
0% { background-position: 120% 0; }
|
|
9230
|
+
55% { background-position: -20% 0; }
|
|
9231
|
+
100% { background-position: -20% 0; }
|
|
9232
|
+
}
|
|
9233
|
+
.update-card.is-success {
|
|
9234
|
+
background:
|
|
9235
|
+
radial-gradient(120% 120% at 0% 0%, var(--success-muted) 0%, transparent 55%),
|
|
9236
|
+
linear-gradient(180deg, var(--bg-elevated) 0%, var(--bg-primary) 100%);
|
|
9237
|
+
border-color: var(--success);
|
|
9238
|
+
box-shadow: var(--shadow-xl), 0 0 0 1px rgba(255,255,255,0.4) inset, var(--shadow-glow-success);
|
|
9239
|
+
}
|
|
9240
|
+
.update-card-header {
|
|
9241
|
+
position: relative;
|
|
9242
|
+
z-index: 1;
|
|
9243
|
+
display: flex;
|
|
9244
|
+
align-items: flex-start;
|
|
9245
|
+
gap: 10px;
|
|
9246
|
+
}
|
|
9247
|
+
.update-card-icon {
|
|
9248
|
+
width: 32px;
|
|
9249
|
+
height: 32px;
|
|
9250
|
+
flex-shrink: 0;
|
|
9251
|
+
border-radius: var(--radius-sm);
|
|
9252
|
+
display: flex;
|
|
9253
|
+
align-items: center;
|
|
9254
|
+
justify-content: center;
|
|
9255
|
+
color: white;
|
|
9256
|
+
background: linear-gradient(135deg, var(--accent) 0%, var(--accent-hover) 100%);
|
|
9257
|
+
box-shadow: 0 4px 12px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,0.35);
|
|
9258
|
+
}
|
|
9259
|
+
.update-card.is-success .update-card-icon {
|
|
9260
|
+
background: linear-gradient(135deg, var(--success) 0%, var(--success-hover) 100%);
|
|
9261
|
+
box-shadow: 0 4px 12px var(--success-glow), inset 0 1px 0 rgba(255,255,255,0.35);
|
|
9262
|
+
}
|
|
9263
|
+
.update-card-heading {
|
|
9264
|
+
flex: 1;
|
|
9265
|
+
min-width: 0;
|
|
9266
|
+
display: flex;
|
|
9267
|
+
flex-direction: column;
|
|
9268
|
+
gap: 2px;
|
|
9269
|
+
}
|
|
9270
|
+
.update-card-title {
|
|
9271
|
+
font-size: 0.88rem;
|
|
9272
|
+
font-weight: 700;
|
|
9273
|
+
color: var(--text-primary);
|
|
9274
|
+
letter-spacing: 0.01em;
|
|
9275
|
+
line-height: 1.25;
|
|
9276
|
+
}
|
|
9277
|
+
.update-card-subtitle {
|
|
9278
|
+
font-size: 0.72rem;
|
|
9279
|
+
color: var(--text-tertiary);
|
|
9280
|
+
line-height: 1.35;
|
|
9281
|
+
}
|
|
9282
|
+
.update-card-close {
|
|
9283
|
+
flex-shrink: 0;
|
|
9284
|
+
width: 24px;
|
|
9285
|
+
height: 24px;
|
|
9286
|
+
border: none;
|
|
9287
|
+
border-radius: var(--radius-sm);
|
|
9288
|
+
background: transparent;
|
|
9289
|
+
color: var(--text-muted);
|
|
9290
|
+
cursor: pointer;
|
|
9291
|
+
display: flex;
|
|
9292
|
+
align-items: center;
|
|
9293
|
+
justify-content: center;
|
|
9294
|
+
padding: 0;
|
|
9295
|
+
transition: background 0.15s, color 0.15s;
|
|
9296
|
+
}
|
|
9297
|
+
.update-card-close:hover {
|
|
9298
|
+
background: var(--bg-tertiary);
|
|
9299
|
+
color: var(--text-primary);
|
|
9300
|
+
}
|
|
9301
|
+
|
|
9302
|
+
.update-card-version {
|
|
9303
|
+
position: relative;
|
|
9304
|
+
z-index: 1;
|
|
9305
|
+
margin: 12px 0 10px;
|
|
9306
|
+
display: flex;
|
|
9307
|
+
align-items: center;
|
|
9308
|
+
gap: 8px;
|
|
9309
|
+
flex-wrap: nowrap;
|
|
9310
|
+
}
|
|
9311
|
+
.update-card-version-chip {
|
|
9312
|
+
font-family: var(--font-mono, ui-monospace, "SF Mono", Menlo, Consolas, monospace);
|
|
9313
|
+
font-size: 0.74rem;
|
|
9314
|
+
font-weight: 600;
|
|
9315
|
+
padding: 3px 10px;
|
|
9316
|
+
border-radius: var(--radius-full);
|
|
9317
|
+
border: 1px solid var(--border-subtle);
|
|
9318
|
+
white-space: nowrap;
|
|
9319
|
+
}
|
|
9320
|
+
.update-card-version-current {
|
|
9321
|
+
color: var(--text-tertiary);
|
|
9322
|
+
background: var(--bg-tertiary);
|
|
9323
|
+
}
|
|
9324
|
+
.update-card-version-latest {
|
|
9325
|
+
color: var(--accent);
|
|
9326
|
+
background: var(--accent-muted);
|
|
9327
|
+
border-color: var(--accent);
|
|
9328
|
+
box-shadow: 0 1px 6px var(--accent-glow);
|
|
9329
|
+
}
|
|
9330
|
+
.update-card.is-success .update-card-version-latest {
|
|
9331
|
+
color: var(--success);
|
|
9332
|
+
background: var(--success-muted);
|
|
9333
|
+
border-color: var(--success);
|
|
9334
|
+
box-shadow: 0 1px 6px var(--success-glow);
|
|
9335
|
+
}
|
|
9336
|
+
.update-card-version-arrow {
|
|
9337
|
+
color: var(--text-muted);
|
|
9338
|
+
flex-shrink: 0;
|
|
9339
|
+
}
|
|
9340
|
+
|
|
9341
|
+
.update-card-progress {
|
|
9342
|
+
position: relative;
|
|
9343
|
+
z-index: 1;
|
|
9344
|
+
height: 0;
|
|
9345
|
+
overflow: hidden;
|
|
9346
|
+
margin: 0;
|
|
9347
|
+
transition: height 0.25s ease, margin 0.25s ease;
|
|
9348
|
+
}
|
|
9349
|
+
.update-card-progress.active {
|
|
9350
|
+
height: 6px;
|
|
9351
|
+
margin: 0 0 10px;
|
|
9352
|
+
}
|
|
9353
|
+
.update-card-progress-track {
|
|
9354
|
+
position: relative;
|
|
9355
|
+
width: 100%;
|
|
9356
|
+
height: 100%;
|
|
9357
|
+
background: var(--bg-tertiary);
|
|
9358
|
+
border-radius: var(--radius-full);
|
|
9359
|
+
overflow: hidden;
|
|
9360
|
+
}
|
|
9361
|
+
.update-card-progress-fill {
|
|
9362
|
+
position: absolute;
|
|
9363
|
+
top: 0;
|
|
9364
|
+
left: -40%;
|
|
9365
|
+
width: 40%;
|
|
9366
|
+
height: 100%;
|
|
9367
|
+
border-radius: var(--radius-full);
|
|
9368
|
+
background: linear-gradient(90deg, var(--accent) 0%, var(--accent-hover) 100%);
|
|
9369
|
+
box-shadow: 0 0 10px var(--accent-glow);
|
|
9370
|
+
animation: update-card-progress-sweep 1.4s cubic-bezier(0.65, 0.05, 0.35, 1) infinite;
|
|
9371
|
+
}
|
|
9372
|
+
@keyframes update-card-progress-sweep {
|
|
9373
|
+
0% { left: -45%; width: 40%; }
|
|
9374
|
+
50% { left: 25%; width: 55%; }
|
|
9375
|
+
100% { left: 105%; width: 40%; }
|
|
9376
|
+
}
|
|
9377
|
+
|
|
9378
|
+
.update-card-status {
|
|
9379
|
+
position: relative;
|
|
9380
|
+
z-index: 1;
|
|
9381
|
+
font-size: 0.72rem;
|
|
9382
|
+
line-height: 1.4;
|
|
9383
|
+
padding: 6px 10px;
|
|
9384
|
+
border-radius: var(--radius-sm);
|
|
9385
|
+
margin-bottom: 10px;
|
|
9386
|
+
background: var(--bg-tertiary);
|
|
9387
|
+
color: var(--text-secondary);
|
|
9388
|
+
border: 1px solid var(--border-subtle);
|
|
9389
|
+
}
|
|
9390
|
+
.update-card-status.error {
|
|
9391
|
+
background: var(--danger-muted);
|
|
9392
|
+
color: var(--danger);
|
|
9393
|
+
border-color: var(--danger);
|
|
9394
|
+
}
|
|
9395
|
+
.update-card-status.success {
|
|
9396
|
+
background: var(--success-muted);
|
|
9397
|
+
color: var(--success);
|
|
9398
|
+
border-color: var(--success);
|
|
9399
|
+
}
|
|
9400
|
+
|
|
9401
|
+
.update-card-actions {
|
|
9402
|
+
position: relative;
|
|
9403
|
+
z-index: 1;
|
|
9404
|
+
display: flex;
|
|
9405
|
+
justify-content: flex-end;
|
|
9406
|
+
gap: 8px;
|
|
9407
|
+
}
|
|
9408
|
+
.update-card-action {
|
|
9409
|
+
font-size: 0.78rem;
|
|
9410
|
+
font-weight: 600;
|
|
9411
|
+
padding: 7px 16px;
|
|
9412
|
+
border-radius: var(--radius-sm);
|
|
9413
|
+
border: 1px solid transparent;
|
|
9414
|
+
cursor: pointer;
|
|
9415
|
+
display: inline-flex;
|
|
9416
|
+
align-items: center;
|
|
9417
|
+
gap: 6px;
|
|
9418
|
+
transition: transform 0.12s ease, filter 0.15s ease, box-shadow 0.15s ease;
|
|
9419
|
+
}
|
|
9420
|
+
.update-card-action-primary {
|
|
9421
|
+
background: linear-gradient(135deg, var(--accent) 0%, var(--accent-hover) 100%);
|
|
9422
|
+
color: white;
|
|
9423
|
+
box-shadow: 0 4px 12px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,0.25);
|
|
9424
|
+
}
|
|
9425
|
+
.update-card-action-primary:hover:not(:disabled) {
|
|
9426
|
+
filter: brightness(1.05);
|
|
9427
|
+
transform: translateY(-1px);
|
|
9428
|
+
box-shadow: 0 6px 16px var(--accent-glow), inset 0 1px 0 rgba(255,255,255,0.3);
|
|
9429
|
+
}
|
|
9430
|
+
.update-card-action-primary:active:not(:disabled) {
|
|
9431
|
+
transform: translateY(0);
|
|
9432
|
+
filter: brightness(0.96);
|
|
9433
|
+
}
|
|
9434
|
+
.update-card-action:disabled {
|
|
9435
|
+
opacity: 0.7;
|
|
9436
|
+
cursor: progress;
|
|
9437
|
+
filter: none;
|
|
9438
|
+
transform: none;
|
|
9439
|
+
}
|
|
9440
|
+
.update-card.is-success .update-card-action-primary {
|
|
9441
|
+
background: linear-gradient(135deg, var(--success) 0%, var(--success-hover) 100%);
|
|
9442
|
+
box-shadow: 0 4px 12px var(--success-glow), inset 0 1px 0 rgba(255,255,255,0.25);
|
|
9443
|
+
}
|
|
9444
|
+
.update-card.is-success .update-card-action-primary:hover:not(:disabled) {
|
|
9445
|
+
box-shadow: 0 6px 16px var(--success-glow), inset 0 1px 0 rgba(255,255,255,0.3);
|
|
9446
|
+
}
|
|
9447
|
+
|
|
9188
9448
|
/* Restart overlay */
|
|
9189
9449
|
.restart-overlay {
|
|
9190
9450
|
position: fixed;
|
|
@@ -10610,67 +10870,372 @@
|
|
|
10610
10870
|
color: var(--accent);
|
|
10611
10871
|
}
|
|
10612
10872
|
|
|
10613
|
-
/*
|
|
10614
|
-
|
|
10615
|
-
|
|
10616
|
-
|
|
10617
|
-
|
|
10618
|
-
|
|
10619
|
-
|
|
10620
|
-
|
|
10621
|
-
|
|
10622
|
-
|
|
10623
|
-
background-size: 200% 100%;
|
|
10624
|
-
animation: skeleton-shimmer 1.5s ease-in-out infinite;
|
|
10873
|
+
/* ── File explorer header extras ── */
|
|
10874
|
+
.file-explorer-up,
|
|
10875
|
+
.file-explorer-toggle-hidden {
|
|
10876
|
+
background: none;
|
|
10877
|
+
border: none;
|
|
10878
|
+
cursor: pointer;
|
|
10879
|
+
font-size: 1rem;
|
|
10880
|
+
padding: 4px;
|
|
10881
|
+
width: 28px;
|
|
10882
|
+
height: 28px;
|
|
10625
10883
|
border-radius: 6px;
|
|
10884
|
+
color: var(--text-muted);
|
|
10885
|
+
display: flex;
|
|
10886
|
+
align-items: center;
|
|
10887
|
+
justify-content: center;
|
|
10888
|
+
transition: background var(--transition-fast), color var(--transition-fast);
|
|
10889
|
+
flex-shrink: 0;
|
|
10626
10890
|
}
|
|
10627
|
-
|
|
10628
|
-
|
|
10629
|
-
|
|
10630
|
-
|
|
10891
|
+
.file-explorer-up:hover,
|
|
10892
|
+
.file-explorer-toggle-hidden:hover {
|
|
10893
|
+
background: var(--bg-tertiary);
|
|
10894
|
+
color: var(--text-secondary);
|
|
10631
10895
|
}
|
|
10632
|
-
|
|
10633
|
-
|
|
10634
|
-
|
|
10635
|
-
margin-bottom: 8px;
|
|
10636
|
-
border-radius: 4px;
|
|
10896
|
+
.file-explorer-toggle-hidden.active {
|
|
10897
|
+
color: var(--accent);
|
|
10898
|
+
background: var(--accent-muted);
|
|
10637
10899
|
}
|
|
10638
|
-
.skeleton-text:last-child { width: 60%; }
|
|
10639
10900
|
|
|
10640
|
-
|
|
10641
|
-
|
|
10642
|
-
|
|
10643
|
-
|
|
10901
|
+
/* ── File tree size/meta column ── */
|
|
10902
|
+
.tree-meta {
|
|
10903
|
+
flex-shrink: 0;
|
|
10904
|
+
font-size: 0.6875rem;
|
|
10905
|
+
color: var(--text-muted);
|
|
10906
|
+
font-variant-numeric: tabular-nums;
|
|
10907
|
+
margin-left: 6px;
|
|
10908
|
+
padding-left: 6px;
|
|
10909
|
+
max-width: 70px;
|
|
10910
|
+
overflow: hidden;
|
|
10911
|
+
text-overflow: ellipsis;
|
|
10912
|
+
white-space: nowrap;
|
|
10913
|
+
opacity: 0.85;
|
|
10644
10914
|
}
|
|
10915
|
+
.tree-item:hover .tree-meta { color: var(--text-secondary); }
|
|
10645
10916
|
|
|
10646
|
-
|
|
10647
|
-
|
|
10648
|
-
|
|
10649
|
-
|
|
10917
|
+
/* ── Truncation notice in file tree ── */
|
|
10918
|
+
.tree-truncated {
|
|
10919
|
+
padding: 8px 14px;
|
|
10920
|
+
margin: 4px 6px 8px;
|
|
10921
|
+
font-size: 0.6875rem;
|
|
10922
|
+
color: var(--text-muted);
|
|
10923
|
+
background: var(--bg-secondary);
|
|
10924
|
+
border: 1px dashed var(--border);
|
|
10925
|
+
border-radius: 6px;
|
|
10926
|
+
text-align: center;
|
|
10650
10927
|
}
|
|
10651
10928
|
|
|
10652
|
-
/*
|
|
10653
|
-
|
|
10654
|
-
|
|
10655
|
-
|
|
10656
|
-
|
|
10657
|
-
|
|
10658
|
-
|
|
10659
|
-
|
|
10660
|
-
|
|
10661
|
-
|
|
10662
|
-
|
|
10663
|
-
}
|
|
10929
|
+
/* ── File context menu (right-click / long-press) ── */
|
|
10930
|
+
.file-context-menu {
|
|
10931
|
+
position: fixed;
|
|
10932
|
+
z-index: 1100;
|
|
10933
|
+
min-width: 200px;
|
|
10934
|
+
padding: 4px;
|
|
10935
|
+
background: var(--bg-primary);
|
|
10936
|
+
border: 1px solid var(--border);
|
|
10937
|
+
border-radius: 10px;
|
|
10938
|
+
box-shadow: 0 12px 36px rgba(0, 0, 0, 0.18);
|
|
10939
|
+
animation: ctx-fade-in 0.12s ease;
|
|
10664
10940
|
}
|
|
10665
|
-
|
|
10666
|
-
|
|
10667
|
-
|
|
10668
|
-
|
|
10669
|
-
|
|
10670
|
-
|
|
10671
|
-
|
|
10672
|
-
|
|
10673
|
-
|
|
10941
|
+
@keyframes ctx-fade-in {
|
|
10942
|
+
from { opacity: 0; transform: translateY(-4px) scale(0.98); }
|
|
10943
|
+
to { opacity: 1; transform: translateY(0) scale(1); }
|
|
10944
|
+
}
|
|
10945
|
+
.file-context-menu-item {
|
|
10946
|
+
display: flex;
|
|
10947
|
+
align-items: center;
|
|
10948
|
+
gap: 10px;
|
|
10949
|
+
width: 100%;
|
|
10950
|
+
padding: 8px 12px;
|
|
10951
|
+
border: none;
|
|
10952
|
+
background: transparent;
|
|
10953
|
+
color: var(--text-primary);
|
|
10954
|
+
font-size: 0.8125rem;
|
|
10955
|
+
text-align: left;
|
|
10956
|
+
cursor: pointer;
|
|
10957
|
+
border-radius: 6px;
|
|
10958
|
+
transition: background 0.12s;
|
|
10959
|
+
}
|
|
10960
|
+
.file-context-menu-item:hover { background: var(--bg-tertiary); }
|
|
10961
|
+
.file-context-menu-item .ctx-icon { width: 18px; text-align: center; opacity: 0.85; }
|
|
10962
|
+
|
|
10963
|
+
/* ── Mini toast for in-app feedback ── */
|
|
10964
|
+
.wand-mini-toast {
|
|
10965
|
+
position: fixed;
|
|
10966
|
+
bottom: 30px;
|
|
10967
|
+
left: 50%;
|
|
10968
|
+
transform: translate(-50%, 14px);
|
|
10969
|
+
z-index: 1200;
|
|
10970
|
+
padding: 8px 16px;
|
|
10971
|
+
background: rgba(20, 20, 20, 0.92);
|
|
10972
|
+
color: #fff;
|
|
10973
|
+
font-size: 0.8125rem;
|
|
10974
|
+
border-radius: 999px;
|
|
10975
|
+
opacity: 0;
|
|
10976
|
+
transition: opacity 0.18s ease, transform 0.18s ease;
|
|
10977
|
+
pointer-events: none;
|
|
10978
|
+
}
|
|
10979
|
+
.wand-mini-toast.show { opacity: 1; transform: translate(-50%, 0); }
|
|
10980
|
+
|
|
10981
|
+
/* ── Preview toolbar ── */
|
|
10982
|
+
.file-preview-toolbar {
|
|
10983
|
+
display: flex;
|
|
10984
|
+
align-items: center;
|
|
10985
|
+
gap: 4px;
|
|
10986
|
+
flex-shrink: 0;
|
|
10987
|
+
margin-left: 8px;
|
|
10988
|
+
}
|
|
10989
|
+
.file-preview-toolbar-btn {
|
|
10990
|
+
background: none;
|
|
10991
|
+
border: 1px solid transparent;
|
|
10992
|
+
cursor: pointer;
|
|
10993
|
+
padding: 4px 8px;
|
|
10994
|
+
min-width: 32px;
|
|
10995
|
+
height: 28px;
|
|
10996
|
+
border-radius: 6px;
|
|
10997
|
+
color: var(--text-muted);
|
|
10998
|
+
font-size: 0.75rem;
|
|
10999
|
+
display: inline-flex;
|
|
11000
|
+
align-items: center;
|
|
11001
|
+
justify-content: center;
|
|
11002
|
+
transition: background 0.15s, color 0.15s, border-color 0.15s;
|
|
11003
|
+
}
|
|
11004
|
+
.file-preview-toolbar-btn:hover {
|
|
11005
|
+
background: var(--bg-tertiary);
|
|
11006
|
+
color: var(--text-primary);
|
|
11007
|
+
border-color: var(--border);
|
|
11008
|
+
}
|
|
11009
|
+
.file-preview-toolbar-btn.toolbar-active {
|
|
11010
|
+
background: var(--accent-muted);
|
|
11011
|
+
color: var(--accent);
|
|
11012
|
+
border-color: var(--accent);
|
|
11013
|
+
}
|
|
11014
|
+
|
|
11015
|
+
/* ── Code preview wrap mode ── */
|
|
11016
|
+
.code-preview-content pre.wrap {
|
|
11017
|
+
white-space: pre-wrap;
|
|
11018
|
+
word-break: break-word;
|
|
11019
|
+
}
|
|
11020
|
+
|
|
11021
|
+
/* ── Image preview ── */
|
|
11022
|
+
.file-preview-body.kind-image {
|
|
11023
|
+
display: flex;
|
|
11024
|
+
align-items: center;
|
|
11025
|
+
justify-content: center;
|
|
11026
|
+
background:
|
|
11027
|
+
linear-gradient(45deg, rgba(0,0,0,0.04) 25%, transparent 25%, transparent 75%, rgba(0,0,0,0.04) 75%),
|
|
11028
|
+
linear-gradient(45deg, rgba(0,0,0,0.04) 25%, transparent 25%, transparent 75%, rgba(0,0,0,0.04) 75%),
|
|
11029
|
+
var(--bg-primary);
|
|
11030
|
+
background-size: 16px 16px;
|
|
11031
|
+
background-position: 0 0, 8px 8px;
|
|
11032
|
+
}
|
|
11033
|
+
.image-preview-wrapper {
|
|
11034
|
+
width: 100%;
|
|
11035
|
+
height: 100%;
|
|
11036
|
+
display: flex;
|
|
11037
|
+
align-items: center;
|
|
11038
|
+
justify-content: center;
|
|
11039
|
+
overflow: auto;
|
|
11040
|
+
padding: 16px;
|
|
11041
|
+
}
|
|
11042
|
+
.image-preview-img {
|
|
11043
|
+
max-width: 100%;
|
|
11044
|
+
max-height: 100%;
|
|
11045
|
+
object-fit: contain;
|
|
11046
|
+
cursor: zoom-in;
|
|
11047
|
+
transition: transform 0.2s ease;
|
|
11048
|
+
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.12);
|
|
11049
|
+
border-radius: 4px;
|
|
11050
|
+
background: #fff;
|
|
11051
|
+
}
|
|
11052
|
+
.image-preview-img.zoomed {
|
|
11053
|
+
max-width: none;
|
|
11054
|
+
max-height: none;
|
|
11055
|
+
cursor: zoom-out;
|
|
11056
|
+
transform: scale(1);
|
|
11057
|
+
}
|
|
11058
|
+
|
|
11059
|
+
/* ── PDF preview ── */
|
|
11060
|
+
.file-preview-body.kind-pdf {
|
|
11061
|
+
padding: 0;
|
|
11062
|
+
background: var(--bg-secondary);
|
|
11063
|
+
}
|
|
11064
|
+
.pdf-preview-frame {
|
|
11065
|
+
width: 100%;
|
|
11066
|
+
height: 100%;
|
|
11067
|
+
border: none;
|
|
11068
|
+
background: var(--bg-secondary);
|
|
11069
|
+
}
|
|
11070
|
+
|
|
11071
|
+
/* ── Video / audio preview ── */
|
|
11072
|
+
.file-preview-body.kind-video,
|
|
11073
|
+
.file-preview-body.kind-audio {
|
|
11074
|
+
display: flex;
|
|
11075
|
+
align-items: center;
|
|
11076
|
+
justify-content: center;
|
|
11077
|
+
background: #0d0d0d;
|
|
11078
|
+
}
|
|
11079
|
+
.file-preview-body.kind-audio { background: var(--bg-secondary); }
|
|
11080
|
+
.media-preview-wrapper {
|
|
11081
|
+
display: flex;
|
|
11082
|
+
flex-direction: column;
|
|
11083
|
+
align-items: center;
|
|
11084
|
+
gap: 10px;
|
|
11085
|
+
max-width: 100%;
|
|
11086
|
+
max-height: 100%;
|
|
11087
|
+
padding: 24px;
|
|
11088
|
+
}
|
|
11089
|
+
.media-preview-video {
|
|
11090
|
+
max-width: 100%;
|
|
11091
|
+
max-height: calc(100% - 40px);
|
|
11092
|
+
background: #000;
|
|
11093
|
+
border-radius: 4px;
|
|
11094
|
+
}
|
|
11095
|
+
.media-preview-audio { width: min(420px, 90%); }
|
|
11096
|
+
.media-preview-icon { font-size: 3.5rem; opacity: 0.7; }
|
|
11097
|
+
.media-preview-name {
|
|
11098
|
+
font-weight: 600;
|
|
11099
|
+
color: var(--text-primary);
|
|
11100
|
+
font-size: 1rem;
|
|
11101
|
+
max-width: 100%;
|
|
11102
|
+
overflow: hidden;
|
|
11103
|
+
text-overflow: ellipsis;
|
|
11104
|
+
white-space: nowrap;
|
|
11105
|
+
}
|
|
11106
|
+
.media-preview-meta {
|
|
11107
|
+
color: var(--text-muted);
|
|
11108
|
+
font-size: 0.75rem;
|
|
11109
|
+
font-variant-numeric: tabular-nums;
|
|
11110
|
+
}
|
|
11111
|
+
.file-preview-body.kind-video .media-preview-meta { color: rgba(255,255,255,0.7); }
|
|
11112
|
+
|
|
11113
|
+
/* ── Binary fallback card ── */
|
|
11114
|
+
.file-preview-body.kind-binary {
|
|
11115
|
+
display: flex;
|
|
11116
|
+
align-items: center;
|
|
11117
|
+
justify-content: center;
|
|
11118
|
+
}
|
|
11119
|
+
.binary-preview-card {
|
|
11120
|
+
max-width: 480px;
|
|
11121
|
+
padding: 32px 28px;
|
|
11122
|
+
text-align: center;
|
|
11123
|
+
background: var(--bg-secondary);
|
|
11124
|
+
border: 1px solid var(--border);
|
|
11125
|
+
border-radius: var(--radius-lg);
|
|
11126
|
+
display: flex;
|
|
11127
|
+
flex-direction: column;
|
|
11128
|
+
align-items: center;
|
|
11129
|
+
gap: 10px;
|
|
11130
|
+
}
|
|
11131
|
+
.binary-preview-icon { font-size: 3rem; opacity: 0.6; }
|
|
11132
|
+
.binary-preview-name {
|
|
11133
|
+
font-weight: 600;
|
|
11134
|
+
color: var(--text-primary);
|
|
11135
|
+
font-size: 1rem;
|
|
11136
|
+
word-break: break-all;
|
|
11137
|
+
}
|
|
11138
|
+
.binary-preview-meta {
|
|
11139
|
+
display: flex;
|
|
11140
|
+
gap: 6px;
|
|
11141
|
+
align-items: center;
|
|
11142
|
+
color: var(--text-muted);
|
|
11143
|
+
font-size: 0.75rem;
|
|
11144
|
+
}
|
|
11145
|
+
.binary-preview-path {
|
|
11146
|
+
font-family: var(--font-mono);
|
|
11147
|
+
font-size: 0.75rem;
|
|
11148
|
+
color: var(--text-muted);
|
|
11149
|
+
max-width: 100%;
|
|
11150
|
+
overflow: hidden;
|
|
11151
|
+
text-overflow: ellipsis;
|
|
11152
|
+
white-space: nowrap;
|
|
11153
|
+
}
|
|
11154
|
+
.binary-preview-actions {
|
|
11155
|
+
display: flex;
|
|
11156
|
+
gap: 8px;
|
|
11157
|
+
margin-top: 8px;
|
|
11158
|
+
flex-wrap: wrap;
|
|
11159
|
+
justify-content: center;
|
|
11160
|
+
}
|
|
11161
|
+
.binary-preview-btn {
|
|
11162
|
+
padding: 8px 16px;
|
|
11163
|
+
border-radius: 6px;
|
|
11164
|
+
border: 1px solid var(--border);
|
|
11165
|
+
background: var(--bg-primary);
|
|
11166
|
+
color: var(--text-primary);
|
|
11167
|
+
font-size: 0.8125rem;
|
|
11168
|
+
cursor: pointer;
|
|
11169
|
+
text-decoration: none;
|
|
11170
|
+
transition: background 0.15s, border-color 0.15s, color 0.15s;
|
|
11171
|
+
}
|
|
11172
|
+
.binary-preview-btn:hover {
|
|
11173
|
+
background: var(--accent-muted);
|
|
11174
|
+
border-color: var(--accent);
|
|
11175
|
+
color: var(--accent);
|
|
11176
|
+
}
|
|
11177
|
+
|
|
11178
|
+
/* ============================================
|
|
11179
|
+
骨架屏加载效果
|
|
11180
|
+
============================================ */
|
|
11181
|
+
.skeleton {
|
|
11182
|
+
background: linear-gradient(
|
|
11183
|
+
90deg,
|
|
11184
|
+
var(--bg-tertiary) 25%,
|
|
11185
|
+
rgba(255, 255, 255, 0.5) 50%,
|
|
11186
|
+
var(--bg-tertiary) 75%
|
|
11187
|
+
);
|
|
11188
|
+
background-size: 200% 100%;
|
|
11189
|
+
animation: skeleton-shimmer 1.5s ease-in-out infinite;
|
|
11190
|
+
border-radius: 6px;
|
|
11191
|
+
}
|
|
11192
|
+
|
|
11193
|
+
@keyframes skeleton-shimmer {
|
|
11194
|
+
0% { background-position: 200% 0; }
|
|
11195
|
+
100% { background-position: -200% 0; }
|
|
11196
|
+
}
|
|
11197
|
+
|
|
11198
|
+
.skeleton-text {
|
|
11199
|
+
height: 14px;
|
|
11200
|
+
margin-bottom: 8px;
|
|
11201
|
+
border-radius: 4px;
|
|
11202
|
+
}
|
|
11203
|
+
.skeleton-text:last-child { width: 60%; }
|
|
11204
|
+
|
|
11205
|
+
.skeleton-avatar {
|
|
11206
|
+
width: 28px;
|
|
11207
|
+
height: 28px;
|
|
11208
|
+
border-radius: 50%;
|
|
11209
|
+
}
|
|
11210
|
+
|
|
11211
|
+
.skeleton-btn {
|
|
11212
|
+
height: 32px;
|
|
11213
|
+
width: 80px;
|
|
11214
|
+
border-radius: 16px;
|
|
11215
|
+
}
|
|
11216
|
+
|
|
11217
|
+
/* ============================================
|
|
11218
|
+
状态变化动画
|
|
11219
|
+
============================================ */
|
|
11220
|
+
@keyframes fadeInScale {
|
|
11221
|
+
from {
|
|
11222
|
+
opacity: 0;
|
|
11223
|
+
transform: scale(0.95);
|
|
11224
|
+
}
|
|
11225
|
+
to {
|
|
11226
|
+
opacity: 1;
|
|
11227
|
+
transform: scale(1);
|
|
11228
|
+
}
|
|
11229
|
+
}
|
|
11230
|
+
|
|
11231
|
+
@keyframes slideInFromRight {
|
|
11232
|
+
from {
|
|
11233
|
+
opacity: 0;
|
|
11234
|
+
transform: translateX(20px);
|
|
11235
|
+
}
|
|
11236
|
+
to {
|
|
11237
|
+
opacity: 1;
|
|
11238
|
+
transform: translateX(0);
|
|
10674
11239
|
}
|
|
10675
11240
|
}
|
|
10676
11241
|
|
|
@@ -11676,6 +12241,202 @@
|
|
|
11676
12241
|
cursor: pointer;
|
|
11677
12242
|
display: inline-block;
|
|
11678
12243
|
}
|
|
12244
|
+
/* Toggle 行右侧附属操作(如「查看」按钮 + 开关同列) */
|
|
12245
|
+
.settings-toggle-aside {
|
|
12246
|
+
flex: 0 0 auto;
|
|
12247
|
+
display: flex;
|
|
12248
|
+
align-items: center;
|
|
12249
|
+
gap: 10px;
|
|
12250
|
+
}
|
|
12251
|
+
|
|
12252
|
+
/* ── Env preview modal ── */
|
|
12253
|
+
.env-preview-modal {
|
|
12254
|
+
max-width: 720px;
|
|
12255
|
+
}
|
|
12256
|
+
.env-preview-body {
|
|
12257
|
+
display: flex;
|
|
12258
|
+
flex-direction: column;
|
|
12259
|
+
gap: 12px;
|
|
12260
|
+
padding: 18px 24px 8px;
|
|
12261
|
+
min-height: 0;
|
|
12262
|
+
}
|
|
12263
|
+
.env-preview-toolbar {
|
|
12264
|
+
display: flex;
|
|
12265
|
+
align-items: center;
|
|
12266
|
+
justify-content: space-between;
|
|
12267
|
+
gap: 12px;
|
|
12268
|
+
flex-wrap: wrap;
|
|
12269
|
+
}
|
|
12270
|
+
.env-preview-meta {
|
|
12271
|
+
display: inline-flex;
|
|
12272
|
+
align-items: center;
|
|
12273
|
+
gap: 8px;
|
|
12274
|
+
font-size: 0.78rem;
|
|
12275
|
+
color: var(--text-secondary);
|
|
12276
|
+
}
|
|
12277
|
+
.env-preview-pill {
|
|
12278
|
+
display: inline-flex;
|
|
12279
|
+
align-items: center;
|
|
12280
|
+
padding: 2px 10px;
|
|
12281
|
+
border-radius: var(--radius-full);
|
|
12282
|
+
font-size: 0.72rem;
|
|
12283
|
+
font-weight: 600;
|
|
12284
|
+
letter-spacing: 0.02em;
|
|
12285
|
+
border: 1px solid var(--border-subtle);
|
|
12286
|
+
}
|
|
12287
|
+
.env-preview-pill.is-inherit {
|
|
12288
|
+
color: var(--accent);
|
|
12289
|
+
background: var(--accent-muted);
|
|
12290
|
+
border-color: var(--accent);
|
|
12291
|
+
}
|
|
12292
|
+
.env-preview-pill.is-minimal {
|
|
12293
|
+
color: var(--success);
|
|
12294
|
+
background: var(--success-muted);
|
|
12295
|
+
border-color: var(--success);
|
|
12296
|
+
}
|
|
12297
|
+
.env-preview-count {
|
|
12298
|
+
font-size: 0.72rem;
|
|
12299
|
+
color: var(--text-muted);
|
|
12300
|
+
}
|
|
12301
|
+
.env-preview-controls {
|
|
12302
|
+
display: flex;
|
|
12303
|
+
align-items: center;
|
|
12304
|
+
gap: 10px;
|
|
12305
|
+
flex-wrap: wrap;
|
|
12306
|
+
}
|
|
12307
|
+
.env-preview-search {
|
|
12308
|
+
width: 200px;
|
|
12309
|
+
max-width: 100%;
|
|
12310
|
+
padding: 6px 10px;
|
|
12311
|
+
border-radius: var(--radius-sm);
|
|
12312
|
+
border: 1px solid var(--border);
|
|
12313
|
+
background: var(--bg-elevated);
|
|
12314
|
+
font-size: 0.78rem;
|
|
12315
|
+
color: var(--text-primary);
|
|
12316
|
+
}
|
|
12317
|
+
.env-preview-search:focus {
|
|
12318
|
+
outline: none;
|
|
12319
|
+
border-color: var(--border-focus);
|
|
12320
|
+
box-shadow: 0 0 0 3px var(--accent-glow);
|
|
12321
|
+
}
|
|
12322
|
+
.env-preview-reveal {
|
|
12323
|
+
display: inline-flex;
|
|
12324
|
+
align-items: center;
|
|
12325
|
+
gap: 6px;
|
|
12326
|
+
font-size: 0.74rem;
|
|
12327
|
+
color: var(--text-secondary);
|
|
12328
|
+
cursor: pointer;
|
|
12329
|
+
user-select: none;
|
|
12330
|
+
}
|
|
12331
|
+
.env-preview-reveal input {
|
|
12332
|
+
accent-color: var(--accent);
|
|
12333
|
+
cursor: pointer;
|
|
12334
|
+
}
|
|
12335
|
+
.env-preview-list {
|
|
12336
|
+
max-height: min(56vh, 460px);
|
|
12337
|
+
overflow-y: auto;
|
|
12338
|
+
border-radius: var(--radius-sm);
|
|
12339
|
+
border: 1px solid var(--border-subtle);
|
|
12340
|
+
background: var(--bg-elevated);
|
|
12341
|
+
padding: 4px;
|
|
12342
|
+
}
|
|
12343
|
+
.env-preview-list:focus { outline: none; }
|
|
12344
|
+
.env-preview-row {
|
|
12345
|
+
display: grid;
|
|
12346
|
+
grid-template-columns: minmax(0, 220px) minmax(0, 1fr) auto;
|
|
12347
|
+
gap: 12px;
|
|
12348
|
+
align-items: center;
|
|
12349
|
+
padding: 8px 10px;
|
|
12350
|
+
border-radius: var(--radius-xs);
|
|
12351
|
+
font-family: var(--font-mono, ui-monospace, "SF Mono", Menlo, Consolas, monospace);
|
|
12352
|
+
font-size: 0.74rem;
|
|
12353
|
+
transition: background 0.12s;
|
|
12354
|
+
}
|
|
12355
|
+
.env-preview-row:hover {
|
|
12356
|
+
background: var(--bg-tertiary);
|
|
12357
|
+
}
|
|
12358
|
+
.env-preview-row + .env-preview-row {
|
|
12359
|
+
border-top: 1px dashed var(--border-subtle);
|
|
12360
|
+
}
|
|
12361
|
+
.env-preview-name {
|
|
12362
|
+
color: var(--text-primary);
|
|
12363
|
+
font-weight: 600;
|
|
12364
|
+
display: inline-flex;
|
|
12365
|
+
align-items: center;
|
|
12366
|
+
gap: 6px;
|
|
12367
|
+
flex-wrap: wrap;
|
|
12368
|
+
overflow-wrap: anywhere;
|
|
12369
|
+
}
|
|
12370
|
+
.env-preview-row.is-sensitive .env-preview-name {
|
|
12371
|
+
color: var(--warning);
|
|
12372
|
+
}
|
|
12373
|
+
.env-preview-badge {
|
|
12374
|
+
display: inline-flex;
|
|
12375
|
+
align-items: center;
|
|
12376
|
+
padding: 1px 6px;
|
|
12377
|
+
border-radius: var(--radius-full);
|
|
12378
|
+
font-family: inherit;
|
|
12379
|
+
font-size: 0.62rem;
|
|
12380
|
+
font-weight: 600;
|
|
12381
|
+
letter-spacing: 0.04em;
|
|
12382
|
+
background: var(--warning-muted);
|
|
12383
|
+
color: var(--warning);
|
|
12384
|
+
border: 1px solid var(--warning);
|
|
12385
|
+
}
|
|
12386
|
+
.env-preview-badge-runtime {
|
|
12387
|
+
background: var(--info-muted);
|
|
12388
|
+
color: var(--info);
|
|
12389
|
+
border-color: var(--info);
|
|
12390
|
+
}
|
|
12391
|
+
.env-preview-value {
|
|
12392
|
+
color: var(--text-secondary);
|
|
12393
|
+
overflow: hidden;
|
|
12394
|
+
text-overflow: ellipsis;
|
|
12395
|
+
white-space: nowrap;
|
|
12396
|
+
min-width: 0;
|
|
12397
|
+
}
|
|
12398
|
+
.env-preview-value.is-runtime {
|
|
12399
|
+
font-style: italic;
|
|
12400
|
+
color: var(--text-muted);
|
|
12401
|
+
}
|
|
12402
|
+
.env-preview-len {
|
|
12403
|
+
color: var(--text-muted);
|
|
12404
|
+
font-size: 0.68rem;
|
|
12405
|
+
white-space: nowrap;
|
|
12406
|
+
}
|
|
12407
|
+
.env-preview-loading,
|
|
12408
|
+
.env-preview-empty {
|
|
12409
|
+
padding: 24px 8px;
|
|
12410
|
+
text-align: center;
|
|
12411
|
+
color: var(--text-muted);
|
|
12412
|
+
font-size: 0.78rem;
|
|
12413
|
+
}
|
|
12414
|
+
.env-preview-footer {
|
|
12415
|
+
display: flex;
|
|
12416
|
+
align-items: center;
|
|
12417
|
+
justify-content: space-between;
|
|
12418
|
+
gap: 12px;
|
|
12419
|
+
padding: 14px 24px 18px;
|
|
12420
|
+
}
|
|
12421
|
+
.env-preview-hint {
|
|
12422
|
+
font-size: 0.7rem;
|
|
12423
|
+
color: var(--text-muted);
|
|
12424
|
+
flex: 1;
|
|
12425
|
+
min-width: 0;
|
|
12426
|
+
}
|
|
12427
|
+
|
|
12428
|
+
@media (max-width: 640px) {
|
|
12429
|
+
.env-preview-modal { max-width: calc(100vw - 24px); }
|
|
12430
|
+
.env-preview-row {
|
|
12431
|
+
grid-template-columns: 1fr;
|
|
12432
|
+
gap: 4px;
|
|
12433
|
+
}
|
|
12434
|
+
.env-preview-len {
|
|
12435
|
+
justify-self: end;
|
|
12436
|
+
}
|
|
12437
|
+
.env-preview-search { width: 100%; }
|
|
12438
|
+
.env-preview-controls { width: 100%; }
|
|
12439
|
+
}
|
|
11679
12440
|
|
|
11680
12441
|
/* Range 行(音量等) */
|
|
11681
12442
|
.settings-range-row {
|