@leeguoo/pwtk-network-debugger 1.3.7 → 1.3.8

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/index.esm.js CHANGED
@@ -7454,48 +7454,70 @@ function formatJson(obj) {
7454
7454
  return JSON.stringify(obj, null, 2);
7455
7455
  }
7456
7456
  const styles = `
7457
- /* iOS 26 Liquid Glass NetworkDebugger 样式 */
7458
- :root {
7459
- --liquid-glass-primary: rgba(255, 255, 255, 0.15);
7460
- --liquid-glass-secondary: rgba(255, 255, 255, 0.08);
7461
- --liquid-glass-border: rgba(255, 255, 255, 0.18);
7462
- --liquid-glass-shadow: rgba(31, 38, 135, 0.37);
7463
- --liquid-glass-highlight: rgba(255, 255, 255, 0.25);
7464
- --liquid-glass-dark: rgba(13, 17, 23, 0.75);
7457
+ /* iOS-style Liquid Glass UI */
7458
+ :host {
7459
+ color-scheme: light;
7460
+ --glass-blur: 24px;
7461
+ --glass-sat: 165%;
7462
+ --glass-brightness: 1.05;
7463
+ --glass-base: rgba(255, 255, 255, 0.04);
7464
+ --glass-surface: rgba(255, 255, 255, 0.06);
7465
+ --glass-surface-strong: rgba(255, 255, 255, 0.1);
7466
+ --glass-border: rgba(255, 255, 255, 0.14);
7467
+ --glass-border-weak: rgba(255, 255, 255, 0.08);
7468
+ --glass-shadow: 0 18px 40px rgba(12, 18, 30, 0.14);
7469
+ --glass-inner: inset 0 1px 0 rgba(255, 255, 255, 0.2);
7470
+ --text-primary: rgba(18, 22, 31, 0.92);
7471
+ --text-secondary: rgba(18, 22, 31, 0.7);
7472
+ --text-tertiary: rgba(18, 22, 31, 0.52);
7473
+ --accent: #0A84FF;
7474
+ --accent-strong: #007AFF;
7475
+ --success: #34C759;
7476
+ --warning: #FF9F0A;
7477
+ --danger: #FF3B30;
7478
+ --purple: #BF5AF2;
7479
+ --safe-top: env(safe-area-inset-top, 0px);
7480
+ --safe-right: env(safe-area-inset-right, 0px);
7481
+ --safe-bottom: env(safe-area-inset-bottom, 0px);
7482
+ --safe-left: env(safe-area-inset-left, 0px);
7483
+ font-family: "SF Pro Text", "SF Pro Display", -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", sans-serif;
7484
+ line-height: 1.35;
7465
7485
  }
7466
7486
 
7467
7487
  #network-debugger-panel {
7468
7488
  position: fixed;
7469
7489
  z-index: 999999;
7490
+ box-sizing: border-box;
7470
7491
 
7471
7492
  /* 强制 GPU 加速和 3D 变换 */
7472
7493
  transform: translate3d(0, 0, 0);
7473
7494
  will-change: transform, backdrop-filter;
7474
7495
 
7475
7496
  /* iOS 26 Liquid Glass 核心效果 - 增强版 */
7476
- backdrop-filter: blur(25px) saturate(200%) brightness(1.05) !important;
7477
- -webkit-backdrop-filter: blur(25px) saturate(200%) brightness(1.05) !important;
7497
+ backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat)) brightness(var(--glass-brightness)) !important;
7498
+ -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(var(--glass-sat)) brightness(var(--glass-brightness)) !important;
7478
7499
 
7479
- /* iOS 浅色毛玻璃背景 */
7480
- background: rgba(245, 245, 247, 0.8);
7481
- background-image: linear-gradient(
7482
- 135deg,
7483
- rgba(255, 255, 255, 0.5) 0%,
7484
- rgba(255, 255, 255, 0.25) 100%
7485
- );
7500
+ /* Light glass surface */
7501
+ background:
7502
+ linear-gradient(
7503
+ 150deg,
7504
+ rgba(255, 255, 255, 0.16) 0%,
7505
+ rgba(255, 255, 255, 0.04) 100%
7506
+ ),
7507
+ radial-gradient(
7508
+ 120% 100% at 10% 0%,
7509
+ rgba(255, 255, 255, 0.1) 0%,
7510
+ rgba(255, 255, 255, 0.02) 45%,
7511
+ transparent 70%
7512
+ ),
7513
+ var(--glass-base);
7486
7514
 
7487
- /* 玻璃边框 */
7488
- border: 1px solid rgba(255, 255, 255, 0.25);
7515
+ border: 1px solid var(--glass-border);
7489
7516
 
7490
- /* 多层阴影创建深度 */
7491
- box-shadow:
7492
- 0 10px 40px rgba(31, 38, 135, 0.4),
7493
- inset 0 2px 4px rgba(255, 255, 255, 0.3),
7494
- inset 0 -2px 4px rgba(0, 0, 0, 0.12);
7517
+ box-shadow: var(--glass-shadow), var(--glass-inner);
7495
7518
 
7496
7519
  border-radius: 20px;
7497
- color: #ffffff;
7498
- font-family: 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Monaco', 'Menlo', monospace;
7520
+ color: var(--text-primary);
7499
7521
  font-size: 12px;
7500
7522
  overflow: hidden;
7501
7523
  max-width: 90vw;
@@ -7505,6 +7527,10 @@ const styles = `
7505
7527
  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
7506
7528
  }
7507
7529
 
7530
+ #network-debugger-panel.webgl-active {
7531
+ background: rgba(255, 255, 255, 0.01);
7532
+ }
7533
+
7508
7534
  /* 主面板的镜面反射效果 */
7509
7535
  #network-debugger-panel::before {
7510
7536
  content: '';
@@ -7513,14 +7539,19 @@ const styles = `
7513
7539
  border-radius: inherit;
7514
7540
  background: linear-gradient(
7515
7541
  135deg,
7516
- rgba(255, 255, 255, 0.3) 0%,
7517
- rgba(255, 255, 255, 0.05) 50%,
7542
+ rgba(255, 255, 255, 0.08) 0%,
7543
+ rgba(255, 255, 255, 0.03) 45%,
7518
7544
  transparent 100%
7519
7545
  );
7520
7546
  pointer-events: none;
7521
7547
  z-index: 1;
7522
7548
  }
7523
7549
 
7550
+ #network-debugger-panel.webgl-active::before,
7551
+ #network-debugger-panel.webgl-active::after {
7552
+ opacity: 0.2;
7553
+ }
7554
+
7524
7555
  /* 镜面高光效果 */
7525
7556
  #network-debugger-panel::after {
7526
7557
  content: '';
@@ -7529,7 +7560,7 @@ const styles = `
7529
7560
  border-radius: inherit;
7530
7561
  background: radial-gradient(
7531
7562
  circle at 30% 30%,
7532
- rgba(255, 255, 255, 0.2),
7563
+ rgba(255, 255, 255, 0.06),
7533
7564
  transparent 70%
7534
7565
  );
7535
7566
  pointer-events: none;
@@ -7548,33 +7579,28 @@ const styles = `
7548
7579
  transform: translate3d(0, 0, 0) !important;
7549
7580
  will-change: transform, backdrop-filter !important;
7550
7581
 
7551
- /* 真正的 iOS Liquid Glass 效果 - 加强版 */
7552
- background:
7553
- /* 顶部高光 */
7554
- linear-gradient(180deg,
7555
- rgba(255, 255, 255, 0.5) 0%,
7556
- rgba(255, 255, 255, 0.1) 35%),
7557
- /* 主玻璃层 */
7558
- radial-gradient(ellipse at top,
7559
- rgba(255, 255, 255, 0.35),
7560
- rgba(255, 255, 255, 0.12)),
7561
- /* iOS 浅色基底 */
7562
- rgba(245, 245, 247, 0.85) !important;
7582
+ background:
7583
+ linear-gradient(
7584
+ 180deg,
7585
+ rgba(255, 255, 255, 0.12) 0%,
7586
+ rgba(255, 255, 255, 0.04) 45%
7587
+ ),
7588
+ radial-gradient(
7589
+ 120% 120% at 30% 0%,
7590
+ rgba(255, 255, 255, 0.07),
7591
+ rgba(255, 255, 255, 0.03)
7592
+ ),
7593
+ rgba(255, 255, 255, 0.08) !important;
7563
7594
 
7564
- /* 增强毛玻璃效果 */
7565
- backdrop-filter: blur(40px) saturate(220%) brightness(1.1) !important;
7566
- -webkit-backdrop-filter: blur(40px) saturate(220%) brightness(1.1) !important;
7595
+ backdrop-filter: blur(32px) saturate(185%) brightness(1.06) !important;
7596
+ -webkit-backdrop-filter: blur(32px) saturate(185%) brightness(1.06) !important;
7567
7597
 
7568
- /* iOS 风格边缘光效 - 增强版 */
7569
- box-shadow:
7570
- /* 外发光 */
7598
+ box-shadow:
7571
7599
  0 0 0 0.5px rgba(255, 255, 255, 0.7) !important,
7572
- /* 内阴影创建玻璃厚度 */
7573
- inset 0 1px 0 0 rgba(255, 255, 255, 0.7) !important,
7574
- inset 0 -1px 0 0 rgba(0, 0, 0, 0.2) !important,
7575
- /* 深度阴影 */
7576
- 0 15px 40px rgba(0, 0, 0, 0.3) !important,
7577
- 0 4px 10px rgba(0, 0, 0, 0.2) !important;
7600
+ inset 0 1px 0 0 rgba(255, 255, 255, 0.6) !important,
7601
+ inset 0 -1px 0 0 rgba(0, 0, 0, 0.15) !important,
7602
+ 0 14px 30px rgba(9, 14, 22, 0.2) !important,
7603
+ 0 4px 10px rgba(9, 14, 22, 0.12) !important;
7578
7604
 
7579
7605
  /* 平滑过渡 */
7580
7606
  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1) !important;
@@ -7598,29 +7624,29 @@ const styles = `
7598
7624
  }
7599
7625
 
7600
7626
  #network-debugger-panel.bottom-right {
7601
- bottom: 20px;
7602
- right: 20px;
7627
+ bottom: calc(18px + var(--safe-bottom));
7628
+ right: calc(18px + var(--safe-right));
7603
7629
  width: 600px;
7604
7630
  height: 500px;
7605
7631
  }
7606
7632
 
7607
7633
  #network-debugger-panel.bottom-left {
7608
- bottom: 20px;
7609
- left: 20px;
7634
+ bottom: calc(18px + var(--safe-bottom));
7635
+ left: calc(18px + var(--safe-left));
7610
7636
  width: 600px;
7611
7637
  height: 500px;
7612
7638
  }
7613
7639
 
7614
7640
  #network-debugger-panel.top-right {
7615
- top: 20px;
7616
- right: 20px;
7641
+ top: calc(18px + var(--safe-top));
7642
+ right: calc(18px + var(--safe-right));
7617
7643
  width: 600px;
7618
7644
  height: 500px;
7619
7645
  }
7620
7646
 
7621
7647
  #network-debugger-panel.top-left {
7622
- top: 20px;
7623
- left: 20px;
7648
+ top: calc(18px + var(--safe-top));
7649
+ left: calc(18px + var(--safe-left));
7624
7650
  width: 600px;
7625
7651
  height: 500px;
7626
7652
  }
@@ -7631,30 +7657,24 @@ const styles = `
7631
7657
  width: 100vw !important;
7632
7658
  height: 100vh !important;
7633
7659
  border-radius: 0;
7660
+ padding-top: var(--safe-top);
7661
+ padding-right: var(--safe-right);
7662
+ padding-bottom: var(--safe-bottom);
7663
+ padding-left: var(--safe-left);
7634
7664
  }
7635
7665
 
7636
7666
  .debugger-header {
7637
- /* 头部 Liquid Glass 效果 */
7638
- backdrop-filter: blur(15px) brightness(1.1);
7639
- -webkit-backdrop-filter: blur(15px) brightness(1.1);
7640
-
7641
- /* 多层背景效果 */
7642
- background:
7643
- /* 顶部高光 */
7644
- linear-gradient(180deg,
7645
- rgba(255, 255, 255, 0.8) 0%,
7646
- rgba(255, 255, 255, 0.4) 60%),
7647
- /* 基础玻璃层 */
7667
+ backdrop-filter: blur(16px) saturate(160%);
7668
+ -webkit-backdrop-filter: blur(16px) saturate(160%);
7669
+ background:
7648
7670
  linear-gradient(
7649
- 135deg,
7650
- rgba(255, 255, 255, 0.6),
7651
- rgba(255, 255, 255, 0.4)
7671
+ 180deg,
7672
+ rgba(255, 255, 255, 0.14) 0%,
7673
+ rgba(255, 255, 255, 0.05) 100%
7652
7674
  );
7653
-
7654
- border: 1px solid rgba(255, 255, 255, 0.2);
7655
- border-bottom: 1px solid rgba(255, 255, 255, 0.15);
7675
+ border-bottom: 1px solid var(--glass-border-weak);
7656
7676
 
7657
- padding: 12px 16px;
7677
+ padding: 10px 14px;
7658
7678
  display: flex;
7659
7679
  justify-content: space-between;
7660
7680
  align-items: center;
@@ -7669,41 +7689,54 @@ const styles = `
7669
7689
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
7670
7690
  }
7671
7691
 
7692
+ .webgl-active .debugger-header {
7693
+ background:
7694
+ linear-gradient(
7695
+ 180deg,
7696
+ rgba(255, 255, 255, 0.08) 0%,
7697
+ rgba(255, 255, 255, 0.03) 100%
7698
+ );
7699
+ }
7700
+
7672
7701
  .debugger-header:hover {
7673
- backdrop-filter: blur(18px) brightness(1.15);
7674
- -webkit-backdrop-filter: blur(18px) brightness(1.15);
7702
+ backdrop-filter: blur(20px) saturate(170%);
7703
+ -webkit-backdrop-filter: blur(20px) saturate(170%);
7675
7704
  background: linear-gradient(
7676
7705
  135deg,
7677
- rgba(255, 255, 255, 0.15),
7706
+ rgba(255, 255, 255, 0.18),
7678
7707
  rgba(255, 255, 255, 0.08)
7679
7708
  );
7680
7709
  }
7681
7710
 
7711
+ .webgl-active .debugger-header:hover {
7712
+ background: linear-gradient(
7713
+ 135deg,
7714
+ rgba(255, 255, 255, 0.12),
7715
+ rgba(255, 255, 255, 0.06)
7716
+ );
7717
+ }
7718
+
7682
7719
  .debugger-title {
7683
7720
  font-weight: 600;
7684
- color: rgba(60, 60, 67, 0.9);
7685
- font-size: 15px;
7686
- text-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
7721
+ color: var(--text-primary);
7722
+ font-size: 14px;
7723
+ letter-spacing: 0.2px;
7687
7724
  }
7688
7725
 
7689
7726
  .debugger-controls {
7690
7727
  display: flex;
7691
- gap: 10px;
7728
+ gap: 8px;
7692
7729
  position: relative;
7693
7730
  z-index: 3;
7694
7731
  }
7695
7732
 
7696
7733
  /* 搜索栏样式 */
7697
7734
  .debugger-search-bar {
7698
- padding: 8px 15px;
7699
- backdrop-filter: blur(10px) brightness(1.08);
7700
- -webkit-backdrop-filter: blur(10px) brightness(1.08);
7701
- background: linear-gradient(
7702
- 135deg,
7703
- rgba(255, 255, 255, 0.5),
7704
- rgba(255, 255, 255, 0.3)
7705
- );
7706
- border-bottom: 1px solid rgba(255, 255, 255, 0.2);
7735
+ padding: 6px 12px;
7736
+ backdrop-filter: blur(10px) saturate(150%);
7737
+ -webkit-backdrop-filter: blur(10px) saturate(150%);
7738
+ background: var(--glass-surface);
7739
+ border-bottom: 1px solid var(--glass-border-weak);
7707
7740
  display: flex;
7708
7741
  align-items: center;
7709
7742
  gap: 10px;
@@ -7716,22 +7749,18 @@ const styles = `
7716
7749
  position: relative;
7717
7750
  display: flex;
7718
7751
  align-items: center;
7719
- background: rgba(255, 255, 255, 0.7);
7720
- border: 1px solid rgba(0, 0, 0, 0.08);
7752
+ background: rgba(255, 255, 255, 0.12);
7753
+ border: 1px solid rgba(12, 16, 24, 0.08);
7721
7754
  border-radius: 12px;
7722
- padding: 6px 12px;
7755
+ padding: 5px 10px;
7723
7756
  transition: all 0.2s ease;
7724
- box-shadow:
7725
- inset 0 1px 3px rgba(0, 0, 0, 0.08),
7726
- 0 1px 1px rgba(255, 255, 255, 0.5);
7757
+ box-shadow: inset 0 1px 2px rgba(12, 16, 24, 0.08);
7727
7758
  }
7728
7759
 
7729
7760
  .search-input-wrapper:focus-within {
7730
- background: rgba(255, 255, 255, 0.9);
7731
- border-color: rgba(0, 122, 255, 0.3);
7732
- box-shadow:
7733
- inset 0 1px 3px rgba(0, 0, 0, 0.1),
7734
- 0 0 0 3px rgba(0, 122, 255, 0.1);
7761
+ background: rgba(255, 255, 255, 0.18);
7762
+ border-color: rgba(10, 132, 255, 0.4);
7763
+ box-shadow: 0 0 0 3px rgba(10, 132, 255, 0.12);
7735
7764
  }
7736
7765
 
7737
7766
  .search-icon {
@@ -7744,14 +7773,14 @@ const styles = `
7744
7773
  flex: 1;
7745
7774
  border: none;
7746
7775
  background: transparent;
7747
- color: rgba(60, 60, 67, 0.9);
7776
+ color: var(--text-primary);
7748
7777
  font-size: 13px;
7749
7778
  outline: none;
7750
7779
  font-family: inherit;
7751
7780
  }
7752
7781
 
7753
7782
  .search-input::placeholder {
7754
- color: rgba(60, 60, 67, 0.5);
7783
+ color: var(--text-tertiary);
7755
7784
  }
7756
7785
 
7757
7786
  .search-clear-btn {
@@ -7764,7 +7793,7 @@ const styles = `
7764
7793
  align-items: center;
7765
7794
  justify-content: center;
7766
7795
  cursor: pointer;
7767
- color: rgba(60, 60, 67, 0.7);
7796
+ color: var(--text-secondary);
7768
7797
  font-size: 16px;
7769
7798
  line-height: 1;
7770
7799
  padding: 0;
@@ -7774,12 +7803,12 @@ const styles = `
7774
7803
  }
7775
7804
 
7776
7805
  .search-clear-btn:hover {
7777
- background: rgba(0, 0, 0, 0.1);
7778
- color: rgba(60, 60, 67, 0.9);
7806
+ background: rgba(0, 0, 0, 0.12);
7807
+ color: var(--text-primary);
7779
7808
  }
7780
7809
 
7781
7810
  .search-stats {
7782
- color: rgba(60, 60, 67, 0.7);
7811
+ color: var(--text-secondary);
7783
7812
  font-size: 12px;
7784
7813
  white-space: nowrap;
7785
7814
  display: none;
@@ -7796,68 +7825,48 @@ const styles = `
7796
7825
  }
7797
7826
 
7798
7827
  .debugger-btn {
7799
- /* 按钮毛玻璃效果但保证可见性 */
7800
- backdrop-filter: blur(8px);
7801
- -webkit-backdrop-filter: blur(8px);
7802
- background: linear-gradient(
7803
- 135deg,
7804
- rgba(255, 255, 255, 0.7),
7805
- rgba(255, 255, 255, 0.5)
7806
- );
7807
- border: 1px solid rgba(0, 0, 0, 0.08);
7808
- color: rgba(60, 60, 67, 0.9);
7809
- text-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);
7810
- padding: 6px 12px;
7828
+ backdrop-filter: blur(10px) saturate(140%);
7829
+ -webkit-backdrop-filter: blur(10px) saturate(140%);
7830
+ background: rgba(255, 255, 255, 0.1);
7831
+ border: 1px solid rgba(12, 16, 24, 0.1);
7832
+ color: var(--text-primary);
7833
+ padding: 5px 10px;
7811
7834
  border-radius: 12px;
7812
7835
  cursor: pointer;
7813
7836
  font-size: 11px;
7814
7837
  font-weight: 600;
7815
7838
 
7816
- /* 按钮阴影 */
7817
- box-shadow:
7818
- 0 2px 8px rgba(0, 0, 0, 0.1),
7819
- inset 0 1px 0 rgba(255, 255, 255, 0.25);
7839
+ box-shadow: 0 2px 6px rgba(12, 16, 24, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.6);
7820
7840
 
7821
7841
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
7822
7842
  transform: translateZ(0);
7823
7843
  }
7824
7844
 
7825
7845
  .debugger-btn:hover {
7826
- backdrop-filter: blur(12px);
7827
- -webkit-backdrop-filter: blur(12px);
7828
- background: linear-gradient(
7829
- 135deg,
7830
- rgba(255, 255, 255, 0.2),
7831
- rgba(255, 255, 255, 0.12)
7832
- );
7833
- transform: scale(1.05) translateZ(5px);
7834
- box-shadow:
7835
- 0 4px 16px rgba(0, 0, 0, 0.15),
7836
- inset 0 1px 0 rgba(255, 255, 255, 0.3);
7846
+ background: rgba(255, 255, 255, 0.14);
7847
+ transform: translateY(-1px);
7848
+ box-shadow: 0 6px 16px rgba(12, 16, 24, 0.12);
7837
7849
  }
7838
7850
 
7839
7851
  .debugger-btn:active {
7840
- transform: scale(0.98);
7841
- transition: transform 0.1s;
7852
+ transform: translateY(0);
7853
+ transition: transform 0.1s ease;
7842
7854
  }
7843
7855
 
7844
7856
  .debugger-btn.active {
7845
- background: linear-gradient(135deg, #007AFF, #5856D6);
7846
- color: #ffffff;
7847
- box-shadow:
7848
- 0 4px 16px rgba(0, 122, 255, 0.25),
7849
- inset 0 1px 0 rgba(255, 255, 255, 0.3);
7850
- backdrop-filter: blur(12px);
7857
+ background: linear-gradient(135deg, rgba(10, 132, 255, 0.2), rgba(10, 132, 255, 0.08));
7858
+ color: var(--accent-strong);
7859
+ border-color: rgba(10, 132, 255, 0.4);
7860
+ box-shadow: 0 6px 16px rgba(10, 132, 255, 0.2);
7861
+ backdrop-filter: blur(12px) saturate(150%);
7851
7862
  }
7852
7863
 
7853
7864
  .debugger-icon {
7854
7865
  width: 16px;
7855
7866
  height: 16px;
7856
7867
  vertical-align: middle;
7857
- filter:
7858
- brightness(0.8)
7859
- drop-shadow(0 1px 2px rgba(255, 255, 255, 0.8));
7860
- color: rgba(60, 60, 67, 0.8);
7868
+ filter: drop-shadow(0 1px 2px rgba(255, 255, 255, 0.6));
7869
+ color: var(--text-secondary);
7861
7870
  }
7862
7871
 
7863
7872
  .debugger-content {
@@ -7869,35 +7878,39 @@ const styles = `
7869
7878
 
7870
7879
  .debugger-tabs {
7871
7880
  display: flex;
7872
- gap: 8px;
7873
- padding: 0 12px;
7874
- margin-bottom: 8px;
7881
+ gap: 4px;
7882
+ padding: 0 10px 6px;
7883
+ margin-bottom: 6px;
7884
+ position: relative;
7885
+ z-index: 2;
7875
7886
  }
7876
7887
 
7877
7888
  .debugger-tab {
7878
7889
  cursor: pointer;
7879
- border: 1px solid transparent;
7880
- border-radius: 10px;
7881
- padding: 6px 14px;
7890
+ border: 1px solid var(--glass-border-weak);
7891
+ border-radius: 999px;
7892
+ padding: 6px 12px;
7882
7893
  font-size: 12px;
7883
- color: rgba(255, 255, 255, 0.85);
7884
- background: rgba(255, 255, 255, 0.08);
7894
+ color: var(--text-secondary);
7895
+ background: rgba(255, 255, 255, 0.07);
7885
7896
  transition: all 0.2s ease;
7886
7897
  }
7887
7898
 
7888
7899
  .debugger-tab:hover {
7889
- border-color: rgba(255, 255, 255, 0.3);
7900
+ border-color: rgba(10, 132, 255, 0.3);
7890
7901
  }
7891
7902
 
7892
7903
  .debugger-tab.active {
7893
- background: rgba(44, 110, 203, 0.7);
7894
- border-color: rgba(255, 255, 255, 0.35);
7895
- color: #fff;
7904
+ background: rgba(10, 132, 255, 0.18);
7905
+ border-color: rgba(10, 132, 255, 0.4);
7906
+ color: var(--accent-strong);
7896
7907
  }
7897
7908
 
7898
7909
  .tab-content {
7899
7910
  display: none;
7900
7911
  height: 100%;
7912
+ position: relative;
7913
+ z-index: 2;
7901
7914
  }
7902
7915
 
7903
7916
  .tab-content.active {
@@ -7907,38 +7920,42 @@ const styles = `
7907
7920
  .debugger-panel-content {
7908
7921
  flex: 1;
7909
7922
  overflow: auto;
7910
- padding: 12px;
7923
+ padding: 10px;
7924
+ position: relative;
7925
+ z-index: 2;
7911
7926
  }
7912
7927
 
7913
7928
  .performance-panel {
7914
7929
  display: flex;
7915
7930
  flex-direction: column;
7916
- gap: 12px;
7931
+ gap: 10px;
7917
7932
  height: 100%;
7918
7933
  overflow-y: auto;
7919
- padding-right: 6px;
7934
+ padding-right: 4px;
7935
+ position: relative;
7936
+ z-index: 2;
7920
7937
  }
7921
7938
 
7922
7939
  .settings-section {
7923
7940
  display: flex;
7924
7941
  flex-direction: column;
7925
- gap: 10px;
7942
+ gap: 8px;
7926
7943
  }
7927
7944
 
7928
7945
  .settings-toggle {
7929
7946
  display: flex;
7930
- gap: 10px;
7947
+ gap: 8px;
7931
7948
  align-items: flex-start;
7932
- padding: 10px;
7949
+ padding: 8px;
7933
7950
  border-radius: 12px;
7934
- background: rgba(255, 255, 255, 0.06);
7935
- border: 1px solid rgba(255, 255, 255, 0.12);
7951
+ background: rgba(255, 255, 255, 0.08);
7952
+ border: 1px solid var(--glass-border-weak);
7936
7953
  cursor: pointer;
7937
7954
  transition: border 0.2s ease, background 0.2s ease;
7938
7955
  }
7939
7956
 
7940
7957
  .settings-toggle:hover {
7941
- border-color: rgba(255, 255, 255, 0.25);
7958
+ border-color: rgba(10, 132, 255, 0.3);
7942
7959
  }
7943
7960
 
7944
7961
  .settings-toggle.disabled {
@@ -7970,16 +7987,16 @@ const styles = `
7970
7987
  .settings-refresh-btn {
7971
7988
  padding: 10px 0;
7972
7989
  border-radius: 10px;
7973
- border: 1px solid rgba(255, 255, 255, 0.25);
7974
- background: rgba(44, 110, 203, 0.75);
7975
- color: #fff;
7990
+ border: 1px solid rgba(10, 132, 255, 0.35);
7991
+ background: rgba(10, 132, 255, 0.18);
7992
+ color: var(--accent-strong);
7976
7993
  font-weight: 600;
7977
7994
  cursor: pointer;
7978
7995
  transition: all 0.2s ease;
7979
7996
  }
7980
7997
 
7981
7998
  .settings-refresh-btn:hover:not(:disabled) {
7982
- background: rgba(44, 110, 203, 0.85);
7999
+ background: rgba(10, 132, 255, 0.28);
7983
8000
  }
7984
8001
 
7985
8002
  .settings-refresh-btn:disabled {
@@ -7989,40 +8006,34 @@ const styles = `
7989
8006
 
7990
8007
  .settings-note {
7991
8008
  font-size: 11px;
7992
- opacity: 0.65;
8009
+ color: var(--text-tertiary);
7993
8010
  line-height: 1.6;
7994
- padding-bottom: 8px;
8011
+ padding-bottom: 6px;
7995
8012
  }
7996
8013
 
7997
8014
  .request-list {
7998
8015
  display: flex;
7999
8016
  flex-direction: column;
8000
- gap: 12px;
8001
- padding: 16px;
8017
+ gap: 10px;
8018
+ padding: 10px 12px 12px;
8002
8019
  position: relative;
8003
8020
  z-index: 2;
8004
8021
  }
8005
8022
 
8006
8023
  .request-item {
8007
- /* 请求项毛玻璃效果加动态光效 */
8008
8024
  position: relative;
8009
- backdrop-filter: blur(10px) brightness(1.1);
8010
- -webkit-backdrop-filter: blur(10px) brightness(1.1);
8011
-
8012
- /* 背景极简化,避免遮挡文本 */
8013
- background: rgba(255, 255, 255, 0.35);
8014
- border: 1px solid rgba(255, 255, 255, 0.28);
8015
- border-radius: 16px;
8016
- padding: 16px;
8025
+ backdrop-filter: blur(12px) saturate(150%);
8026
+ -webkit-backdrop-filter: blur(12px) saturate(150%);
8027
+ background: rgba(255, 255, 255, 0.1);
8028
+ border: 1px solid var(--glass-border);
8029
+ border-radius: 14px;
8030
+ padding: 12px;
8017
8031
  cursor: default;
8018
8032
 
8019
- /* 深度阴影和玻璃效果 */
8020
- box-shadow:
8021
- 0 4px 16px rgba(31, 38, 135, 0.2),
8022
- inset 0 1px 2px rgba(255, 255, 255, 0.15),
8023
- inset 0 -1px 1px rgba(0, 0, 0, 0.05);
8033
+ box-shadow:
8034
+ 0 8px 20px rgba(12, 16, 24, 0.12),
8035
+ inset 0 1px 0 rgba(255, 255, 255, 0.5);
8024
8036
 
8025
- /* 流体动画和光效 */
8026
8037
  transition: background 0.3s ease, box-shadow 0.3s ease, backdrop-filter 0.3s ease;
8027
8038
  transform: translateZ(0);
8028
8039
  animation: none;
@@ -8036,14 +8047,14 @@ const styles = `
8036
8047
  border-radius: inherit;
8037
8048
  background: radial-gradient(
8038
8049
  circle at var(--mouse-x, 30%) var(--mouse-y, 30%),
8039
- rgba(255, 255, 255, 0.4) 0%,
8040
- rgba(255, 255, 255, 0.1) 30%,
8050
+ rgba(255, 255, 255, 0.06) 0%,
8051
+ rgba(255, 255, 255, 0.02) 35%,
8041
8052
  transparent 70%
8042
8053
  );
8043
- opacity: 0;
8054
+ opacity: 0.12;
8044
8055
  transition: opacity 0.4s ease;
8045
8056
  pointer-events: none;
8046
- mix-blend-mode: overlay;
8057
+ mix-blend-mode: screen;
8047
8058
  z-index: 1;
8048
8059
  }
8049
8060
 
@@ -8058,7 +8069,7 @@ const styles = `
8058
8069
  border-radius: 16px 16px 0 0;
8059
8070
  background: linear-gradient(
8060
8071
  180deg,
8061
- rgba(255, 255, 255, 0.2) 0%,
8072
+ rgba(255, 255, 255, 0.04) 0%,
8062
8073
  transparent 100%
8063
8074
  );
8064
8075
  pointer-events: none;
@@ -8066,24 +8077,13 @@ const styles = `
8066
8077
  }
8067
8078
 
8068
8079
  .request-item:hover {
8069
- backdrop-filter: blur(15px) brightness(1.2);
8070
- -webkit-backdrop-filter: blur(15px) brightness(1.2);
8071
-
8072
- /* 增强 hover 时的光效 - 移除会导致抖动的效果 */
8073
- background:
8074
- linear-gradient(
8075
- 135deg,
8076
- rgba(255, 255, 255, 0.2),
8077
- rgba(255, 255, 255, 0.12)
8078
- );
8079
-
8080
- /* 移除 transform 和 animation 避免抖动 */
8080
+ backdrop-filter: blur(16px) saturate(165%);
8081
+ -webkit-backdrop-filter: blur(16px) saturate(165%);
8082
+ background: rgba(255, 255, 255, 0.14);
8081
8083
  transition: background 0.2s ease, box-shadow 0.2s ease, backdrop-filter 0.2s ease;
8082
-
8083
- box-shadow:
8084
- 0 8px 24px rgba(31, 38, 135, 0.25),
8085
- inset 0 2px 4px rgba(255, 255, 255, 0.25),
8086
- inset 0 -2px 2px rgba(0, 0, 0, 0.08);
8084
+ box-shadow:
8085
+ 0 10px 26px rgba(12, 16, 24, 0.16),
8086
+ inset 0 1px 0 rgba(255, 255, 255, 0.55);
8087
8087
  }
8088
8088
 
8089
8089
  /* 激活折射效果 */
@@ -8092,24 +8092,20 @@ const styles = `
8092
8092
  }
8093
8093
 
8094
8094
  .request-item.expanded {
8095
- backdrop-filter: blur(18px) brightness(1.2);
8096
- -webkit-backdrop-filter: blur(18px) brightness(1.2);
8097
- background: linear-gradient(
8098
- 135deg,
8099
- rgba(0, 122, 255, 0.08),
8100
- rgba(255, 255, 255, 0.05)
8101
- );
8102
- border-color: rgba(0, 122, 255, 0.2);
8103
- box-shadow:
8104
- 0 8px 32px rgba(0, 0, 0, 0.15),
8105
- inset 0 2px 4px rgba(255, 255, 255, 0.15);
8095
+ backdrop-filter: blur(18px) saturate(170%);
8096
+ -webkit-backdrop-filter: blur(18px) saturate(170%);
8097
+ background: rgba(255, 255, 255, 0.16);
8098
+ border-color: rgba(10, 132, 255, 0.25);
8099
+ box-shadow:
8100
+ 0 12px 30px rgba(12, 16, 24, 0.18),
8101
+ inset 0 1px 0 rgba(255, 255, 255, 0.6);
8106
8102
  }
8107
8103
 
8108
8104
  .request-header {
8109
8105
  display: flex;
8110
8106
  justify-content: space-between;
8111
8107
  align-items: center;
8112
- margin-bottom: 4px;
8108
+ margin-bottom: 3px;
8113
8109
  cursor: pointer;
8114
8110
  }
8115
8111
 
@@ -8117,44 +8113,37 @@ const styles = `
8117
8113
  /* 方法标签毛玻璃效果 */
8118
8114
  backdrop-filter: blur(6px);
8119
8115
  -webkit-backdrop-filter: blur(6px);
8120
- padding: 4px 10px;
8121
- border-radius: 10px;
8116
+ padding: 3px 8px;
8117
+ border-radius: 9px;
8122
8118
  font-weight: 600;
8123
8119
  font-size: 10px;
8124
8120
  text-transform: uppercase;
8125
8121
  min-width: 45px;
8126
8122
  text-align: center;
8127
- border: 1px solid rgba(255, 255, 255, 0.2);
8128
- box-shadow:
8129
- 0 2px 8px rgba(0, 0, 0, 0.1),
8130
- inset 0 1px 0 rgba(255, 255, 255, 0.25);
8123
+ border: 1px solid rgba(255, 255, 255, 0.4);
8124
+ box-shadow: 0 2px 6px rgba(12, 16, 24, 0.12);
8131
8125
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
8132
8126
  }
8133
8127
 
8134
8128
  .method-get {
8135
- background: linear-gradient(135deg, #4CAF50, #45a049);
8136
- color: #ffffff;
8137
- box-shadow: 0 0 15px rgba(76, 175, 80, 0.4);
8129
+ background: rgba(52, 199, 89, 0.18);
8130
+ color: #0b3b1c;
8138
8131
  }
8139
8132
  .method-post {
8140
- background: linear-gradient(135deg, #2196F3, #1976D2);
8141
- color: #ffffff;
8142
- box-shadow: 0 0 15px rgba(33, 150, 243, 0.4);
8133
+ background: rgba(10, 132, 255, 0.18);
8134
+ color: #0b2a52;
8143
8135
  }
8144
8136
  .method-put {
8145
- background: linear-gradient(135deg, #FF9800, #F57C00);
8146
- color: #ffffff;
8147
- box-shadow: 0 0 15px rgba(255, 152, 0, 0.4);
8137
+ background: rgba(255, 159, 10, 0.2);
8138
+ color: #5a3206;
8148
8139
  }
8149
8140
  .method-delete {
8150
- background: linear-gradient(135deg, #F44336, #D32F2F);
8151
- color: #ffffff;
8152
- box-shadow: 0 0 15px rgba(244, 67, 54, 0.4);
8141
+ background: rgba(255, 59, 48, 0.18);
8142
+ color: #5a0c0c;
8153
8143
  }
8154
8144
  .method-patch {
8155
- background: linear-gradient(135deg, #9C27B0, #7B1FA2);
8156
- color: #ffffff;
8157
- box-shadow: 0 0 15px rgba(156, 39, 176, 0.4);
8145
+ background: rgba(191, 90, 242, 0.18);
8146
+ color: #3b154a;
8158
8147
  }
8159
8148
 
8160
8149
  .request-url {
@@ -8162,7 +8151,7 @@ const styles = `
8162
8151
  margin: 0 8px;
8163
8152
  word-break: break-all;
8164
8153
  white-space: normal;
8165
- color: rgba(20, 20, 33, 0.98);
8154
+ color: var(--text-primary);
8166
8155
  font-size: 11px;
8167
8156
  line-height: 1.3;
8168
8157
  }
@@ -8171,97 +8160,77 @@ const styles = `
8171
8160
  /* 状态码标签毛玻璃效果 */
8172
8161
  backdrop-filter: blur(6px);
8173
8162
  -webkit-backdrop-filter: blur(6px);
8174
- padding: 4px 10px;
8175
- border-radius: 10px;
8163
+ padding: 3px 8px;
8164
+ border-radius: 9px;
8176
8165
  font-size: 10px;
8177
8166
  font-weight: 600;
8178
8167
  min-width: 40px;
8179
8168
  text-align: center;
8180
- border: 1px solid rgba(255, 255, 255, 0.2);
8181
- box-shadow:
8182
- 0 2px 8px rgba(0, 0, 0, 0.1),
8183
- inset 0 1px 0 rgba(255, 255, 255, 0.25);
8169
+ border: 1px solid rgba(255, 255, 255, 0.4);
8170
+ box-shadow: 0 2px 6px rgba(12, 16, 24, 0.12);
8184
8171
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
8185
8172
  }
8186
8173
 
8187
8174
  .status-2xx {
8188
- background: linear-gradient(135deg, #4CAF50, #45a049);
8189
- color: #ffffff;
8190
- box-shadow: 0 3px 12px rgba(0, 0, 0, 0.2);
8175
+ background: rgba(52, 199, 89, 0.2);
8176
+ color: #0b3b1c;
8191
8177
  }
8192
8178
  .status-3xx {
8193
- background: linear-gradient(135deg, #FF9800, #F57C00);
8194
- color: #ffffff;
8195
- box-shadow: 0 3px 12px rgba(0, 0, 0, 0.2);
8179
+ background: rgba(255, 159, 10, 0.2);
8180
+ color: #5a3206;
8196
8181
  }
8197
8182
  .status-4xx {
8198
- background: linear-gradient(135deg, #F44336, #D32F2F);
8199
- color: #ffffff;
8200
- box-shadow: 0 3px 12px rgba(0, 0, 0, 0.2);
8183
+ background: rgba(255, 59, 48, 0.2);
8184
+ color: #5a0c0c;
8201
8185
  }
8202
8186
  .status-5xx {
8203
- background: linear-gradient(135deg, #9C27B0, #7B1FA2);
8204
- color: #ffffff;
8205
- box-shadow: 0 3px 12px rgba(0, 0, 0, 0.2);
8187
+ background: rgba(191, 90, 242, 0.2);
8188
+ color: #3b154a;
8206
8189
  }
8207
8190
  .status-error {
8208
- background: linear-gradient(135deg, #F44336, #D32F2F);
8209
- color: #ffffff;
8210
- box-shadow: 0 3px 12px rgba(0, 0, 0, 0.2);
8191
+ background: rgba(255, 59, 48, 0.2);
8192
+ color: #5a0c0c;
8211
8193
  }
8212
8194
 
8213
8195
  .request-info {
8214
8196
  display: flex;
8215
8197
  justify-content: space-between;
8216
- font-size: 10px;
8217
- color: rgba(60, 60, 67, 0.7);
8198
+ font-size: 9px;
8199
+ color: var(--text-secondary);
8218
8200
  }
8219
8201
 
8220
8202
  .request-details {
8221
- margin-top: 12px;
8222
- border-top: 1px solid rgba(60, 60, 67, 0.2);
8223
- padding-top: 12px;
8203
+ margin-top: 10px;
8204
+ border-top: 1px solid rgba(12, 16, 24, 0.12);
8205
+ padding-top: 10px;
8224
8206
  display: none;
8225
8207
  }
8226
8208
 
8227
- /* 默认折叠headers */
8228
- .request-details .detail-section.collapsible {
8229
- /* 默认折叠状态 */
8230
- }
8231
-
8232
- .request-details .detail-section.collapsible:not(.expanded) .detail-content {
8233
- display: none;
8234
- }
8235
-
8236
- .request-details .detail-section.collapsible:not(.expanded) .collapse-icon {
8237
- transform: rotate(-90deg);
8238
- }
8239
-
8240
8209
  .request-item.expanded .request-details {
8241
8210
  display: block;
8242
8211
  }
8243
8212
 
8244
8213
  .detail-section {
8245
- margin-bottom: 16px;
8214
+ margin-bottom: 12px;
8246
8215
  }
8247
8216
 
8248
8217
  .detail-title {
8249
8218
  font-weight: bold;
8250
- color: #4CAF50;
8251
- margin-bottom: 8px;
8219
+ color: var(--accent-strong);
8220
+ margin-bottom: 6px;
8252
8221
  font-size: 11px;
8253
8222
  text-transform: uppercase;
8254
- border-bottom: 1px solid rgba(60, 60, 67, 0.2);
8255
- padding-bottom: 4px;
8223
+ border-bottom: 1px solid rgba(12, 16, 24, 0.12);
8224
+ padding-bottom: 3px;
8256
8225
  }
8257
8226
 
8258
8227
  .detail-title.highlight {
8259
- color: #FFD700;
8228
+ color: #b07900;
8260
8229
  font-size: 12px;
8261
- background: rgba(255, 215, 0, 0.1);
8230
+ background: rgba(255, 193, 7, 0.16);
8262
8231
  padding: 6px 8px;
8263
8232
  border-radius: 4px;
8264
- border-bottom: 2px solid #FFD700;
8233
+ border-bottom: 2px solid rgba(255, 193, 7, 0.6);
8265
8234
  }
8266
8235
 
8267
8236
  .detail-title.clickable {
@@ -8273,7 +8242,7 @@ const styles = `
8273
8242
  }
8274
8243
 
8275
8244
  .detail-title.clickable:hover {
8276
- background: rgba(76, 175, 80, 0.1);
8245
+ background: rgba(10, 132, 255, 0.12);
8277
8246
  }
8278
8247
 
8279
8248
  .collapse-icon {
@@ -8294,27 +8263,24 @@ const styles = `
8294
8263
  transform: rotate(-90deg);
8295
8264
  }
8296
8265
 
8266
+ .detail-section.collapsible.collapsed .collapse-icon {
8267
+ transform: rotate(-90deg);
8268
+ }
8269
+
8297
8270
  .detail-content {
8298
- /* 详情内容毛玻璃效果 - 浅色主题 */
8299
- backdrop-filter: blur(8px) brightness(1.1);
8300
- -webkit-backdrop-filter: blur(8px) brightness(1.1);
8301
- background: linear-gradient(
8302
- 135deg,
8303
- rgba(255, 255, 255, 0.6),
8304
- rgba(255, 255, 255, 0.4)
8305
- );
8306
- border: 1px solid rgba(60, 60, 67, 0.2);
8307
- padding: 16px;
8271
+ backdrop-filter: blur(10px) saturate(140%);
8272
+ -webkit-backdrop-filter: blur(10px) saturate(140%);
8273
+ background: rgba(255, 255, 255, 0.12);
8274
+ border: 1px solid rgba(12, 16, 24, 0.12);
8275
+ padding: 12px;
8308
8276
  border-radius: 12px;
8309
- max-height: 400px;
8310
- min-height: 300px;
8277
+ max-height: 320px;
8278
+ min-height: 220px;
8311
8279
  overflow: auto;
8312
8280
  user-select: text;
8313
8281
 
8314
8282
  /* 内部阴影 */
8315
- box-shadow:
8316
- inset 0 2px 4px rgba(0, 0, 0, 0.05),
8317
- inset 0 -1px 2px rgba(255, 255, 255, 0.15);
8283
+ box-shadow: inset 0 1px 2px rgba(12, 16, 24, 0.06);
8318
8284
 
8319
8285
  /* 平滑滚动 */
8320
8286
  scroll-behavior: smooth;
@@ -8322,10 +8288,10 @@ const styles = `
8322
8288
 
8323
8289
  .json-content {
8324
8290
  white-space: pre-wrap;
8325
- font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
8291
+ font-family: "SF Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
8326
8292
  font-size: 11px;
8327
8293
  line-height: 1.4;
8328
- color: rgba(60, 60, 67, 0.9);
8294
+ color: var(--text-primary);
8329
8295
  }
8330
8296
 
8331
8297
  .headers-table {
@@ -8336,24 +8302,24 @@ const styles = `
8336
8302
 
8337
8303
  .headers-table th,
8338
8304
  .headers-table td {
8339
- padding: 4px 8px;
8305
+ padding: 3px 6px;
8340
8306
  text-align: left;
8341
- border-bottom: 1px solid rgba(60, 60, 67, 0.2);
8307
+ border-bottom: 1px solid rgba(12, 16, 24, 0.12);
8342
8308
  }
8343
8309
 
8344
8310
  .headers-table th {
8345
- background: rgba(255, 255, 255, 0.3);
8346
- color: #4CAF50;
8311
+ background: rgba(255, 255, 255, 0.08);
8312
+ color: var(--text-secondary);
8347
8313
  font-weight: bold;
8348
8314
  }
8349
8315
 
8350
8316
  .headers-table td {
8351
- color: rgba(20, 20, 33, 0.85);
8317
+ color: var(--text-secondary);
8352
8318
  }
8353
8319
 
8354
8320
  .decrypted-badge {
8355
- background: #4CAF50;
8356
- color: #000;
8321
+ background: rgba(52, 199, 89, 0.2);
8322
+ color: #0b3b1c;
8357
8323
  padding: 2px 6px;
8358
8324
  border-radius: 3px;
8359
8325
  font-size: 9px;
@@ -8362,8 +8328,8 @@ const styles = `
8362
8328
  }
8363
8329
 
8364
8330
  .error-badge {
8365
- background: #F44336;
8366
- color: #fff;
8331
+ background: rgba(255, 59, 48, 0.2);
8332
+ color: #5a0c0c;
8367
8333
  padding: 2px 6px;
8368
8334
  border-radius: 3px;
8369
8335
  font-size: 9px;
@@ -8372,34 +8338,31 @@ const styles = `
8372
8338
  }
8373
8339
 
8374
8340
  .share-btn {
8375
- /* 分享按钮毛玻璃效果 */
8376
8341
  backdrop-filter: blur(6px);
8377
8342
  -webkit-backdrop-filter: blur(6px);
8378
- background: linear-gradient(135deg, #2196F3, #1976D2);
8379
- color: #ffffff;
8380
- border: 1px solid rgba(33, 150, 243, 0.3);
8381
- padding: 6px 12px;
8343
+ background: rgba(10, 132, 255, 0.18);
8344
+ color: var(--accent-strong);
8345
+ border: 1px solid rgba(10, 132, 255, 0.35);
8346
+ padding: 5px 10px;
8382
8347
  border-radius: 10px;
8383
8348
  font-size: 10px;
8384
8349
  font-weight: 500;
8385
- margin-left: 8px;
8350
+ margin-left: 6px;
8386
8351
  cursor: pointer;
8387
8352
  white-space: nowrap;
8388
8353
 
8389
- box-shadow:
8390
- 0 2px 8px rgba(33, 150, 243, 0.3),
8391
- inset 0 1px 0 rgba(255, 255, 255, 0.2);
8354
+ box-shadow:
8355
+ 0 2px 8px rgba(10, 132, 255, 0.16),
8356
+ inset 0 1px 0 rgba(255, 255, 255, 0.25);
8392
8357
 
8393
8358
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
8394
8359
  transform: translateZ(0);
8395
8360
  }
8396
8361
 
8397
8362
  .share-btn:hover {
8398
- background: linear-gradient(135deg, #1976D2, #1565C0);
8399
- transform: scale(1.05) translateZ(5px);
8400
- box-shadow:
8401
- 0 4px 16px rgba(33, 150, 243, 0.4),
8402
- inset 0 1px 0 rgba(255, 255, 255, 0.3);
8363
+ background: rgba(10, 132, 255, 0.28);
8364
+ transform: translateY(-1px);
8365
+ box-shadow: 0 6px 16px rgba(10, 132, 255, 0.2);
8403
8366
  }
8404
8367
 
8405
8368
  .share-btn:active {
@@ -8408,34 +8371,31 @@ const styles = `
8408
8371
  }
8409
8372
 
8410
8373
  .api-curl-btn {
8411
- /* API Curl 按钮毛玻璃效果 */
8412
8374
  backdrop-filter: blur(6px);
8413
8375
  -webkit-backdrop-filter: blur(6px);
8414
- background: linear-gradient(135deg, #4CAF50, #45a049);
8415
- color: #ffffff;
8416
- border: 1px solid rgba(76, 175, 80, 0.3);
8417
- padding: 6px 12px;
8376
+ background: rgba(52, 199, 89, 0.18);
8377
+ color: #0b3b1c;
8378
+ border: 1px solid rgba(52, 199, 89, 0.35);
8379
+ padding: 5px 10px;
8418
8380
  border-radius: 10px;
8419
8381
  font-size: 10px;
8420
8382
  font-weight: 500;
8421
- margin-left: 8px;
8383
+ margin-left: 6px;
8422
8384
  cursor: pointer;
8423
8385
  white-space: nowrap;
8424
8386
 
8425
- box-shadow:
8426
- 0 2px 8px rgba(76, 175, 80, 0.3),
8427
- inset 0 1px 0 rgba(255, 255, 255, 0.2);
8387
+ box-shadow:
8388
+ 0 2px 8px rgba(52, 199, 89, 0.16),
8389
+ inset 0 1px 0 rgba(255, 255, 255, 0.25);
8428
8390
 
8429
8391
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
8430
8392
  transform: translateZ(0);
8431
8393
  }
8432
8394
 
8433
8395
  .api-curl-btn:hover {
8434
- background: linear-gradient(135deg, #45a049, #388E3C);
8435
- transform: scale(1.05) translateZ(5px);
8436
- box-shadow:
8437
- 0 4px 16px rgba(76, 175, 80, 0.4),
8438
- inset 0 1px 0 rgba(255, 255, 255, 0.3);
8396
+ background: rgba(52, 199, 89, 0.28);
8397
+ transform: translateY(-1px);
8398
+ box-shadow: 0 6px 16px rgba(52, 199, 89, 0.2);
8439
8399
  }
8440
8400
 
8441
8401
  .api-curl-btn:active {
@@ -8480,8 +8440,8 @@ const styles = `
8480
8440
 
8481
8441
  .tools-section {
8482
8442
  padding: 12px;
8483
- background: #2a2a2a;
8484
- border-bottom: 1px solid #444;
8443
+ background: rgba(255, 255, 255, 0.65);
8444
+ border-bottom: 1px solid var(--glass-border-weak);
8485
8445
  }
8486
8446
 
8487
8447
  .tool-buttons {
@@ -8492,23 +8452,24 @@ const styles = `
8492
8452
 
8493
8453
  .tool-btn {
8494
8454
  padding: 6px 12px;
8495
- background: #4CAF50;
8496
- color: #000;
8497
- border: none;
8498
- border-radius: 4px;
8455
+ background: rgba(10, 132, 255, 0.18);
8456
+ color: var(--accent-strong);
8457
+ border: 1px solid rgba(10, 132, 255, 0.3);
8458
+ border-radius: 8px;
8499
8459
  cursor: pointer;
8500
8460
  font-size: 11px;
8501
8461
  font-weight: bold;
8502
- transition: background-color 0.2s;
8462
+ transition: background-color 0.2s, transform 0.2s ease;
8503
8463
  }
8504
8464
 
8505
8465
  .tool-btn:hover {
8506
- background: #45a049;
8466
+ background: rgba(10, 132, 255, 0.28);
8467
+ transform: translateY(-1px);
8507
8468
  }
8508
8469
 
8509
8470
  .tool-btn:disabled {
8510
- background: #666;
8511
- color: #999;
8471
+ background: rgba(12, 16, 24, 0.1);
8472
+ color: var(--text-tertiary);
8512
8473
  cursor: not-allowed;
8513
8474
  }
8514
8475
 
@@ -8562,10 +8523,10 @@ const styles = `
8562
8523
 
8563
8524
  @keyframes liquid-glow {
8564
8525
  0%, 100% {
8565
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
8526
+ box-shadow: 0 8px 20px rgba(12, 16, 24, 0.12);
8566
8527
  }
8567
8528
  50% {
8568
- box-shadow: 0 6px 30px rgba(0, 0, 0, 0.2);
8529
+ box-shadow: 0 10px 26px rgba(12, 16, 24, 0.16);
8569
8530
  }
8570
8531
  }
8571
8532
 
@@ -8574,7 +8535,14 @@ const styles = `
8574
8535
  }
8575
8536
 
8576
8537
  .request-item.expanded {
8577
- animation: liquid-glow 2s ease-in-out infinite;
8538
+ animation: liquid-glow 0.9s ease-out 1;
8539
+ }
8540
+
8541
+ @media (prefers-reduced-motion: reduce) {
8542
+ .expanding,
8543
+ .request-item.expanded {
8544
+ animation: none;
8545
+ }
8578
8546
  }
8579
8547
 
8580
8548
  /* 移动端响应式 */
@@ -8583,12 +8551,11 @@ const styles = `
8583
8551
  #network-debugger-panel.bottom-left,
8584
8552
  #network-debugger-panel.top-right,
8585
8553
  #network-debugger-panel.top-left {
8586
- width: calc(100vw - 20px) !important;
8587
- left: 10px !important;
8554
+ width: calc(100vw - 32px - var(--safe-left) - var(--safe-right)) !important;
8555
+ left: calc(16px + var(--safe-left)) !important;
8588
8556
  right: auto !important;
8589
- /* 移动端清晰毛玻璃 */
8590
- backdrop-filter: blur(15px) saturate(150%);
8591
- -webkit-backdrop-filter: blur(15px) saturate(150%);
8557
+ backdrop-filter: blur(18px) saturate(150%);
8558
+ -webkit-backdrop-filter: blur(18px) saturate(150%);
8592
8559
  }
8593
8560
 
8594
8561
  .request-item {
@@ -16725,8 +16692,8 @@ var parseBackgroundColor = function(context, element, backgroundColorOverride) {
16725
16692
  return element === ownerDocument.documentElement ? isTransparent(documentBackgroundColor) ? isTransparent(bodyBackgroundColor) ? defaultBackgroundColor : bodyBackgroundColor : documentBackgroundColor : defaultBackgroundColor;
16726
16693
  };
16727
16694
  const _LiquidEffects = class _LiquidEffects {
16728
- static getAdvancedFragmentShader() {
16729
- return `#version 300 es
16695
+ static getAdvancedFragmentShader(options = {}) {
16696
+ const source = `#version 300 es
16730
16697
  precision highp float;
16731
16698
 
16732
16699
  in vec2 v_uv;
@@ -16750,6 +16717,7 @@ const _LiquidEffects = class _LiquidEffects {
16750
16717
  uniform float u_cornerBoost;
16751
16718
  uniform float u_rippleEffect;
16752
16719
  uniform float u_tintOpacity;
16720
+ uniform float u_glassOpacity;
16753
16721
  uniform float u_time;
16754
16722
 
16755
16723
  out vec4 fragColor;
@@ -16918,8 +16886,8 @@ const _LiquidEffects = class _LiquidEffects {
16918
16886
  vec3 accumulateMid = vec3(0.0);
16919
16887
  vec3 accumulateBottom = vec3(0.0);
16920
16888
 
16921
- int horizontalSamples = 20;
16922
- int verticalSamples = 11; // -5..5
16889
+ const int horizontalSamples = 20;
16890
+ const int verticalSamples = 11; // -5..5
16923
16891
 
16924
16892
  float topY = (viewportCenter.y - containerSize.y * 0.4) / u_textureSize.y;
16925
16893
  float midY = viewportCenter.y / u_textureSize.y;
@@ -16976,9 +16944,14 @@ const _LiquidEffects = class _LiquidEffects {
16976
16944
  }
16977
16945
 
16978
16946
  float mask = 1.0 - smoothstep(-1.0, 1.0, maskDistance);
16979
- fragColor = vec4(color.rgb, mask);
16947
+ float opacity = clamp(u_glassOpacity, 0.02, 0.95);
16948
+ fragColor = vec4(color.rgb, mask * opacity);
16980
16949
  }
16981
16950
  `;
16951
+ if (options.webgl2 === false) {
16952
+ return source.replace("#version 300 es", "").replace("precision highp float;", "precision mediump float;").replace("in vec2 v_uv;", "varying vec2 v_uv;").replace("out vec4 fragColor;", "").replace(/\btexture\(/g, "texture2D(").replace(/\bfragColor\b/g, "gl_FragColor");
16953
+ }
16954
+ return source;
16982
16955
  }
16983
16956
  static getUniformConfig(config) {
16984
16957
  return {
@@ -16992,6 +16965,7 @@ const _LiquidEffects = class _LiquidEffects {
16992
16965
  u_cornerBoost: config.cornerBoost,
16993
16966
  u_rippleEffect: config.rippleEffect,
16994
16967
  u_tintOpacity: config.tintOpacity,
16968
+ u_glassOpacity: config.glassOpacity,
16995
16969
  u_warp: config.warp ? 1 : 0
16996
16970
  };
16997
16971
  }
@@ -17039,8 +17013,10 @@ _LiquidEffects.defaultConfig = {
17039
17013
  // 角落额外高光:营造 iOS 风格角点
17040
17014
  rippleEffect: 0.1,
17041
17015
  // 流动/波纹幅度:越大越活泼
17042
- tintOpacity: 0.2,
17016
+ tintOpacity: 0.06,
17043
17017
  // 色彩混入比例:越大越浑厚
17018
+ glassOpacity: 0.08,
17019
+ // 玻璃整体透明度:越小越通透
17044
17020
  warp: false
17045
17021
  // 是否启用中心扭曲
17046
17022
  };
@@ -17056,7 +17032,8 @@ _LiquidEffects.presets = {
17056
17032
  baseDistance: 0.12,
17057
17033
  cornerBoost: 0.015,
17058
17034
  rippleEffect: 0.05,
17059
- tintOpacity: 0.18,
17035
+ tintOpacity: 0.05,
17036
+ glassOpacity: 0.06,
17060
17037
  warp: false
17061
17038
  },
17062
17039
  normal: {
@@ -17069,7 +17046,8 @@ _LiquidEffects.presets = {
17069
17046
  baseDistance: 0.1,
17070
17047
  cornerBoost: 0.02,
17071
17048
  rippleEffect: 0.1,
17072
- tintOpacity: 0.2,
17049
+ tintOpacity: 0.06,
17050
+ glassOpacity: 0.08,
17073
17051
  warp: false
17074
17052
  },
17075
17053
  dramatic: {
@@ -17082,7 +17060,8 @@ _LiquidEffects.presets = {
17082
17060
  baseDistance: 0.08,
17083
17061
  cornerBoost: 0.035,
17084
17062
  rippleEffect: 0.18,
17085
- tintOpacity: 0.28,
17063
+ tintOpacity: 0.1,
17064
+ glassOpacity: 0.12,
17086
17065
  warp: true
17087
17066
  },
17088
17067
  psychedelic: {
@@ -17095,7 +17074,8 @@ _LiquidEffects.presets = {
17095
17074
  baseDistance: 0.08,
17096
17075
  cornerBoost: 0.05,
17097
17076
  rippleEffect: 0.26,
17098
- tintOpacity: 0.4,
17077
+ tintOpacity: 0.16,
17078
+ glassOpacity: 0.2,
17099
17079
  warp: true
17100
17080
  },
17101
17081
  ios26: {
@@ -17109,13 +17089,15 @@ _LiquidEffects.presets = {
17109
17089
  baseDistance: 0.09,
17110
17090
  cornerBoost: 0.045,
17111
17091
  rippleEffect: 0.22,
17112
- tintOpacity: 0.24,
17092
+ tintOpacity: 0.08,
17093
+ glassOpacity: 0.1,
17113
17094
  warp: true
17114
17095
  }
17115
17096
  };
17116
17097
  let LiquidEffects = _LiquidEffects;
17117
17098
  class LiquidGlassRenderer {
17118
17099
  constructor(config) {
17100
+ this.isWebGL2 = false;
17119
17101
  this.animationId = null;
17120
17102
  this.program = null;
17121
17103
  this.vertexBuffer = null;
@@ -17168,6 +17150,7 @@ class LiquidGlassRenderer {
17168
17150
  if (!gl) {
17169
17151
  throw new Error("Neither WebGL2 nor WebGL1 is supported");
17170
17152
  }
17153
+ this.isWebGL2 = typeof WebGL2RenderingContext !== "undefined" && gl instanceof WebGL2RenderingContext;
17171
17154
  this.gl = gl;
17172
17155
  this.setupGL();
17173
17156
  }
@@ -17194,7 +17177,7 @@ class LiquidGlassRenderer {
17194
17177
  }
17195
17178
  createShaderProgram() {
17196
17179
  const { gl } = this;
17197
- const vertexShaderSource = `#version 300 es
17180
+ const vertexShaderSource = this.isWebGL2 ? `#version 300 es
17198
17181
  precision highp float;
17199
17182
  in vec2 a_position;
17200
17183
  out vec2 v_uv;
@@ -17204,12 +17187,22 @@ class LiquidGlassRenderer {
17204
17187
  v_uv = uv;
17205
17188
  gl_Position = vec4(a_position, 0.0, 1.0);
17206
17189
  }
17190
+ ` : `
17191
+ precision mediump float;
17192
+ attribute vec2 a_position;
17193
+ varying vec2 v_uv;
17194
+ void main() {
17195
+ vec2 uv = a_position * 0.5 + 0.5;
17196
+ uv.y = 1.0 - uv.y;
17197
+ v_uv = uv;
17198
+ gl_Position = vec4(a_position, 0.0, 1.0);
17199
+ }
17207
17200
  `;
17208
- let fragmentShaderSource = LiquidEffects.getAdvancedFragmentShader();
17201
+ let fragmentShaderSource = LiquidEffects.getAdvancedFragmentShader({ webgl2: this.isWebGL2 });
17209
17202
  let fragmentShader = this.compileShader(gl.FRAGMENT_SHADER, fragmentShaderSource);
17210
17203
  if (!fragmentShader) {
17211
17204
  this.usingFallbackShader = true;
17212
- fragmentShaderSource = this.getFallbackFragmentShader();
17205
+ fragmentShaderSource = this.getFallbackFragmentShader(this.isWebGL2);
17213
17206
  fragmentShader = this.compileShader(gl.FRAGMENT_SHADER, fragmentShaderSource);
17214
17207
  if (!fragmentShader) {
17215
17208
  throw new Error("Failed to compile fallback liquid glass shader");
@@ -17248,7 +17241,8 @@ class LiquidGlassRenderer {
17248
17241
  "u_baseDistance",
17249
17242
  "u_cornerBoost",
17250
17243
  "u_rippleEffect",
17251
- "u_tintOpacity"
17244
+ "u_tintOpacity",
17245
+ "u_glassOpacity"
17252
17246
  ];
17253
17247
  const fallbackUniforms = ["u_time", "u_background", "u_resolution"];
17254
17248
  const uniformNames = this.usingFallbackShader ? fallbackUniforms : advancedUniforms;
@@ -17512,7 +17506,28 @@ class LiquidGlassRenderer {
17512
17506
  return 0.016;
17513
17507
  }
17514
17508
  }
17515
- getFallbackFragmentShader() {
17509
+ getFallbackFragmentShader(webgl2) {
17510
+ if (!webgl2) {
17511
+ return `
17512
+ precision mediump float;
17513
+ varying vec2 v_uv;
17514
+ uniform float u_time;
17515
+ uniform vec2 u_resolution;
17516
+ uniform sampler2D u_background;
17517
+ void main() {
17518
+ vec2 uv = v_uv;
17519
+ vec2 noise = vec2(
17520
+ sin(uv.y * 40.0 + u_time * 1.2),
17521
+ cos(uv.x * 40.0 + u_time * 1.1)
17522
+ ) * 0.004;
17523
+ vec4 color = texture2D(u_background, clamp(uv + noise, 0.0, 1.0));
17524
+ float edge = smoothstep(0.0, 0.15, min(min(uv.x, 1.0 - uv.x), min(uv.y, 1.0 - uv.y)));
17525
+ float highlight = pow(1.0 - edge, 6.0);
17526
+ vec3 tint = mix(color.rgb, vec3(1.0), highlight * 0.4);
17527
+ gl_FragColor = vec4(tint, color.a * 0.92);
17528
+ }
17529
+ `;
17530
+ }
17516
17531
  return `#version 300 es
17517
17532
  precision highp float;
17518
17533
  in vec2 v_uv;
@@ -17989,9 +18004,9 @@ class LiquidGlassScene {
17989
18004
  this.backgroundCanvas.height = height;
17990
18005
  this.backgroundCtx.clearRect(0, 0, width, height);
17991
18006
  const gradient = this.backgroundCtx.createLinearGradient(0, 0, width, height);
17992
- gradient.addColorStop(0, "rgba(255, 255, 255, 0.95)");
17993
- gradient.addColorStop(0.45, "rgba(236, 240, 255, 0.72)");
17994
- gradient.addColorStop(1, "rgba(210, 217, 245, 0.65)");
18007
+ gradient.addColorStop(0, "rgba(255, 255, 255, 0.1)");
18008
+ gradient.addColorStop(0.45, "rgba(236, 240, 255, 0.06)");
18009
+ gradient.addColorStop(1, "rgba(210, 217, 245, 0.04)");
17995
18010
  this.backgroundCtx.fillStyle = gradient;
17996
18011
  this.backgroundCtx.fillRect(0, 0, width, height);
17997
18012
  const imageData = this.backgroundCtx.getImageData(0, 0, width, height);
@@ -18249,27 +18264,27 @@ const _WebGLManager = class _WebGLManager {
18249
18264
  style.textContent = `
18250
18265
  .enhanced-css-glass {
18251
18266
  /* 增强的 CSS 毛玻璃效果,模拟 WebGL */
18252
- backdrop-filter: blur(40px) saturate(180%) brightness(1.1) !important;
18253
- -webkit-backdrop-filter: blur(40px) saturate(180%) brightness(1.1) !important;
18267
+ backdrop-filter: blur(40px) saturate(180%) brightness(1.05) !important;
18268
+ -webkit-backdrop-filter: blur(40px) saturate(180%) brightness(1.05) !important;
18254
18269
 
18255
18270
  /* 添加动态渐变背景 */
18256
18271
  background:
18257
18272
  radial-gradient(circle at var(--mouse-x, 50%) var(--mouse-y, 50%),
18258
- rgba(255, 255, 255, 0.4) 0%,
18259
- rgba(255, 255, 255, 0.2) 40%,
18260
- rgba(255, 255, 255, 0.1) 80%),
18273
+ rgba(255, 255, 255, 0.1) 0%,
18274
+ rgba(255, 255, 255, 0.04) 40%,
18275
+ rgba(255, 255, 255, 0.02) 80%),
18261
18276
  linear-gradient(135deg,
18262
- rgba(255, 255, 255, 0.6),
18263
- rgba(245, 245, 247, 0.4)) !important;
18277
+ rgba(255, 255, 255, 0.12),
18278
+ rgba(245, 245, 247, 0.05)) !important;
18264
18279
 
18265
18280
  /* 动态边框 */
18266
- border: 1px solid rgba(255, 255, 255, 0.3) !important;
18281
+ border: 1px solid rgba(255, 255, 255, 0.1) !important;
18267
18282
 
18268
18283
  /* 增强阴影 */
18269
18284
  box-shadow:
18270
- 0 20px 50px rgba(31, 38, 135, 0.3),
18271
- inset 0 2px 6px rgba(255, 255, 255, 0.2),
18272
- inset 0 -2px 4px rgba(0, 0, 0, 0.1) !important;
18285
+ 0 20px 50px rgba(31, 38, 135, 0.12),
18286
+ inset 0 2px 6px rgba(255, 255, 255, 0.06),
18287
+ inset 0 -2px 4px rgba(0, 0, 0, 0.04) !important;
18273
18288
  }
18274
18289
 
18275
18290
  .enhanced-css-glass::before {
@@ -18279,8 +18294,8 @@ const _WebGLManager = class _WebGLManager {
18279
18294
  border-radius: inherit;
18280
18295
  background: radial-gradient(
18281
18296
  circle at var(--mouse-x, 30%) var(--mouse-y, 30%),
18282
- rgba(255, 255, 255, 0.3) 0%,
18283
- rgba(255, 255, 255, 0.1) 50%,
18297
+ rgba(255, 255, 255, 0.08) 0%,
18298
+ rgba(255, 255, 255, 0.03) 50%,
18284
18299
  transparent 100%
18285
18300
  );
18286
18301
  opacity: 0;
@@ -18400,8 +18415,10 @@ const _WebGLManager = class _WebGLManager {
18400
18415
  static checkSupport() {
18401
18416
  try {
18402
18417
  const canvas = document.createElement("canvas");
18403
- const gl = canvas.getContext("webgl2");
18404
- return !!gl;
18418
+ const gl2 = canvas.getContext("webgl2");
18419
+ if (gl2) return true;
18420
+ const gl1 = canvas.getContext("webgl");
18421
+ return !!gl1;
18405
18422
  } catch {
18406
18423
  return false;
18407
18424
  }
@@ -18445,7 +18462,7 @@ const _DebugPanel = class _DebugPanel {
18445
18462
  minimized: false,
18446
18463
  isClosed: false,
18447
18464
  webgl: {
18448
- enabled: true,
18465
+ enabled: false,
18449
18466
  quality: "medium",
18450
18467
  preset: "normal",
18451
18468
  applyToItems: false
@@ -18455,6 +18472,9 @@ const _DebugPanel = class _DebugPanel {
18455
18472
  ...config
18456
18473
  // 再应用传入的配置(优先级最高)
18457
18474
  };
18475
+ if (this.config.webgl) {
18476
+ this.config.webgl.enabled = false;
18477
+ }
18458
18478
  if (this.config.webgl && this.config.webgl.applyToItems === void 0) {
18459
18479
  this.config.webgl.applyToItems = false;
18460
18480
  }
@@ -18497,7 +18517,7 @@ const _DebugPanel = class _DebugPanel {
18497
18517
  this.container.style.pointerEvents = "auto";
18498
18518
  this.container.innerHTML = `
18499
18519
  <div class="debugger-header">
18500
- <div class="debugger-title">🔓 PWTK 解密小工具 <span style="font-size: 10px; opacity: 0.7;">by Leo v${"1.3.7"}</span></div>
18520
+ <div class="debugger-title">🔓 PWTK 解密小工具 <span style="font-size: 10px; opacity: 0.7;">by Leo v${"1.3.8"}</span></div>
18501
18521
  <div class="debugger-controls">
18502
18522
  <button class="debugger-btn" data-action="clear" title="清空"><svg class="debugger-icon" viewBox="0 0 24 24"><path fill="currentColor" d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z"/></svg></button>
18503
18523
  <button class="debugger-btn" data-action="export" title="导出"><svg class="debugger-icon" viewBox="0 0 24 24"><path fill="currentColor" d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"/></svg></button>
@@ -18514,41 +18534,10 @@ const _DebugPanel = class _DebugPanel {
18514
18534
  <div class="search-stats"></div>
18515
18535
  </div>
18516
18536
  <div class="debugger-content">
18517
- <div class="debugger-tabs">
18518
- <button class="debugger-tab active" data-tab="network">网络请求</button>
18519
- <button class="debugger-tab" data-tab="settings">性能与外观</button>
18520
- </div>
18521
18537
  <div class="debugger-panel-content">
18522
18538
  <div class="tab-content network-panel active" data-tab-content="network">
18523
18539
  <div class="request-list"></div>
18524
18540
  </div>
18525
- <div class="tab-content performance-panel" data-tab-content="settings">
18526
- <div class="settings-section" data-setting-group="enableWebGL">
18527
- <label class="settings-toggle">
18528
- <input type="checkbox" data-setting="enableWebGL" />
18529
- <div class="settings-text">
18530
- <div class="settings-title">启用液态玻璃效果</div>
18531
- <div class="settings-desc">关闭后使用轻量级 CSS 背景,适合低性能设备</div>
18532
- </div>
18533
- </label>
18534
- <label class="settings-toggle" data-setting-group="autoRefresh">
18535
- <input type="checkbox" data-setting="autoRefresh" />
18536
- <div class="settings-text">
18537
- <div class="settings-title">自动刷新背景快照</div>
18538
- <div class="settings-desc">监听页面变化自动重新截图,关闭后可通过下方按钮手动刷新</div>
18539
- </div>
18540
- </label>
18541
- <label class="settings-toggle" data-setting-group="enableButtonAnimation">
18542
- <input type="checkbox" data-setting="enableButtonAnimation" />
18543
- <div class="settings-text">
18544
- <div class="settings-title">浮动按钮动效</div>
18545
- <div class="settings-desc">更新 WebGL 按钮的实时玻璃动效,关闭可降低 GPU 压力</div>
18546
- </div>
18547
- </label>
18548
- </div>
18549
- <button class="settings-refresh-btn" data-action="manual-refresh">手动刷新背景</button>
18550
- <div class="settings-note">提示:当性能受限时可以关闭液态玻璃效果。随时可以重新开启,并手动刷新一次背景同步页面。</div>
18551
- </div>
18552
18541
  </div>
18553
18542
  </div>
18554
18543
  `;
@@ -19248,6 +19237,10 @@ Created by Leo (@leeguoo)`);
19248
19237
  async createReopenButton() {
19249
19238
  try {
19250
19239
  this.removeReopenButton();
19240
+ if (!this.config.webgl?.enabled) {
19241
+ this.createFallbackButton();
19242
+ return;
19243
+ }
19251
19244
  const timeout = new Promise(
19252
19245
  (_, reject) => setTimeout(() => reject(new Error("Timeout waiting for liquid glass")), 3e3)
19253
19246
  );
@@ -19303,17 +19296,8 @@ Created by Leo (@leeguoo)`);
19303
19296
  glassButton.textElement.style.color = "#ffffff";
19304
19297
  glassButton.textElement.style.textTransform = "none";
19305
19298
  }
19306
- if (glassButton.canvas) {
19307
- glassButton.canvas.width = buttonWidth;
19308
- glassButton.canvas.height = buttonHeight;
19309
- glassButton.canvas.style.width = `${buttonWidth}px`;
19310
- glassButton.canvas.style.height = `${buttonHeight}px`;
19311
- glassButton.canvas.style.borderRadius = `${buttonHeight / 2}px`;
19312
- }
19313
- if (glassButton.width !== void 0) {
19314
- ;
19315
- glassButton.width = buttonWidth;
19316
- glassButton.height = buttonHeight;
19299
+ if (typeof glassButton.updateSizeFromDOM === "function") {
19300
+ glassButton.updateSizeFromDOM();
19317
19301
  }
19318
19302
  const pos = this.config.position || "bottom-right";
19319
19303
  if (pos.includes("bottom")) {
@@ -19546,6 +19530,7 @@ Created by Leo (@leeguoo)`);
19546
19530
  this.webglManager.destroy();
19547
19531
  this.webglManager = null;
19548
19532
  }
19533
+ this.container.classList.remove("webgl-active");
19549
19534
  this.requestsCache = [];
19550
19535
  this.filteredRequestsCache = [];
19551
19536
  logger.debug("[PWTK] Panel destroyed and all resources cleaned up");
@@ -19670,15 +19655,18 @@ Created by Leo (@leeguoo)`);
19670
19655
  const initialized = await this.webglManager.initialize(this.container);
19671
19656
  if (initialized) {
19672
19657
  this.webglManager.enableForElement(this.container, "main-panel");
19658
+ this.container.classList.add("webgl-active");
19673
19659
  setTimeout(() => {
19674
19660
  this.enableWebGLForRequestItems();
19675
19661
  }, 500);
19676
19662
  this.scheduleWebGLBackgroundUpdate(true);
19677
19663
  logger.debug("✨ WebGL liquid glass effects initialized");
19678
19664
  } else {
19665
+ this.container.classList.remove("webgl-active");
19679
19666
  logger.debug("🔄 WebGL initialization failed, using CSS fallback");
19680
19667
  }
19681
19668
  } catch (error) {
19669
+ this.container.classList.remove("webgl-active");
19682
19670
  logger.error("WebGL initialization error:", error);
19683
19671
  }
19684
19672
  }
@@ -19756,6 +19744,7 @@ Created by Leo (@leeguoo)`);
19756
19744
  } else if (!enabled && this.webglManager) {
19757
19745
  this.webglManager.destroy();
19758
19746
  this.webglManager = null;
19747
+ this.container.classList.remove("webgl-active");
19759
19748
  logger.debug("WebGL effects disabled");
19760
19749
  }
19761
19750
  }
@@ -19777,8 +19766,8 @@ if (typeof window !== "undefined") {
19777
19766
  }
19778
19767
  function loadLiquidGlass() {
19779
19768
  return new Promise((resolve) => {
19780
- import("./container-fXvGYIU-.mjs").then(() => {
19781
- return import("./button-B5OqHDUm.mjs");
19769
+ import("./container-D0255Dzc.mjs").then(() => {
19770
+ return import("./button-CboZyj7j.mjs");
19782
19771
  }).then(() => {
19783
19772
  resolve();
19784
19773
  }).catch((error) => {
@@ -19918,7 +19907,7 @@ const _NetworkDebugger = class _NetworkDebugger {
19918
19907
  }
19919
19908
  async checkForUpdates() {
19920
19909
  try {
19921
- const currentVersion = "1.3.7";
19910
+ const currentVersion = "1.3.8";
19922
19911
  logger.info(`[PWTK Update] Checking for updates... Current version: ${currentVersion}`);
19923
19912
  const response = await fetch("https://registry.npmjs.org/@leeguoo/pwtk-network-debugger/latest");
19924
19913
  const data = await response.json();
@@ -19938,7 +19927,7 @@ const _NetworkDebugger = class _NetworkDebugger {
19938
19927
  logger.error("[PWTK Update] Failed to check for updates:", error);
19939
19928
  return {
19940
19929
  hasUpdate: false,
19941
- currentVersion: "1.3.7"
19930
+ currentVersion: "1.3.8"
19942
19931
  };
19943
19932
  }
19944
19933
  }