aitu-app 0.5.21 → 0.5.24

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.
Files changed (136) hide show
  1. package/README.md +3 -3
  2. package/assets/{ChatMessagesArea-CAnmzKeA.js → ChatMessagesArea-DZUaOu9O.js} +3 -3
  3. package/assets/{Serializer-DPCLjt6U.js → Serializer-C_KNMVa5.js} +1 -1
  4. package/assets/{ToolboxDrawer-D-ZDs49h.js → ToolboxDrawer-DMs6NEQ9.js} +18 -18
  5. package/assets/_baseUniq-CkDEmepm.js +1 -0
  6. package/assets/{advancedFormat-Chr195ZY.js → advancedFormat-DDVKqCcb.js} +1 -1
  7. package/assets/{ai-analyze-D3V-tpIV.js → ai-analyze-CdMnSdcj.js} +1 -1
  8. package/assets/{arc-lNLKXIKC.js → arc-DxooX0JA.js} +1 -1
  9. package/assets/{architectureDiagram-VXUJARFQ-CCzBT9XK.js → architectureDiagram-VXUJARFQ-By9X2_fg.js} +1 -1
  10. package/assets/{batch-image-generation-CgR-a8Ii.js → batch-image-generation-BNCavPE3.js} +1 -1
  11. package/assets/{blockDiagram-38ab4fdb-CbcE_DRD.js → blockDiagram-38ab4fdb-CaSq1se3.js} +1 -1
  12. package/assets/{blockDiagram-VD42YOAC-CgcfCyW1.js → blockDiagram-VD42YOAC-BikDTbXB.js} +1 -1
  13. package/assets/{c4Diagram-3d4e48cf-DqzYo_xg.js → c4Diagram-3d4e48cf-B4tV12g-.js} +1 -1
  14. package/assets/{c4Diagram-YG6GDRKO-BTZAWhX1.js → c4Diagram-YG6GDRKO-JMT--oeK.js} +1 -1
  15. package/assets/channel-C_nOy9ji.js +1 -0
  16. package/assets/{chunk-4BX2VUAB-DH-I_3Sl.js → chunk-4BX2VUAB-BPeyyZbJ.js} +1 -1
  17. package/assets/{chunk-55IACEB6-BJKBSn0v.js → chunk-55IACEB6-Ccwuu0V6.js} +1 -1
  18. package/assets/{chunk-B4BG7PRW-BIhB4ChZ.js → chunk-B4BG7PRW-DLAZ694p.js} +1 -1
  19. package/assets/{chunk-DI55MBZ5-NlFLhYIc.js → chunk-DI55MBZ5-B4N06CXR.js} +1 -1
  20. package/assets/{chunk-FMBD7UC4-QVfOPBEJ.js → chunk-FMBD7UC4-DhF98R8b.js} +1 -1
  21. package/assets/{chunk-QN33PNHL-C_DotWZ6.js → chunk-QN33PNHL-DRmv0Kl8.js} +1 -1
  22. package/assets/{chunk-QZHKN3VN-Ei6ogyMg.js → chunk-QZHKN3VN-NK4FKL-2.js} +1 -1
  23. package/assets/{chunk-TZMSLE5B-CKPTgIMs.js → chunk-TZMSLE5B-C3pBP9gO.js} +1 -1
  24. package/assets/classDiagram-2ON5EDUG-LTjKb48E.js +1 -0
  25. package/assets/{classDiagram-70f12bd4-DeAD0Lw4.js → classDiagram-70f12bd4-CzjJ3zBX.js} +1 -1
  26. package/assets/classDiagram-v2-WZHVMYZB-LTjKb48E.js +1 -0
  27. package/assets/{classDiagram-v2-f2320105-DR43MMrr.js → classDiagram-v2-f2320105-4itfn1co.js} +1 -1
  28. package/assets/clone-aw5zGyML.js +1 -0
  29. package/assets/{cose-bilkent-S5V4N54A-CE31mcuy.js → cose-bilkent-S5V4N54A-D40X2DSY.js} +1 -1
  30. package/assets/{createText-2e5e7dd3-DuyGuD-n.js → createText-2e5e7dd3-DhE7DCyc.js} +1 -1
  31. package/assets/{cytoscape-cose-bilkent-DTqUuT3l.js → cytoscape-cose-bilkent-BsYgDGHx.js} +1 -1
  32. package/assets/{dagre-6UL2VRFP-CuJmVGl3.js → dagre-6UL2VRFP-uiP7xLTe.js} +1 -1
  33. package/assets/{diagram-PSM6KHXK-D5Y5dlL9.js → diagram-PSM6KHXK-BUdQQ4mi.js} +1 -1
  34. package/assets/{diagram-QEK2KX5R-DOWAGxHq.js → diagram-QEK2KX5R-Da7c7682.js} +1 -1
  35. package/assets/{diagram-S2PKOQOG-ykMhl6fc.js → diagram-S2PKOQOG-B6hGrurD.js} +1 -1
  36. package/assets/{edges-e0da2a9e-BpsZLv9t.js → edges-e0da2a9e-BzY0YHdX.js} +1 -1
  37. package/assets/{erDiagram-9861fffd-rZLPDBgy.js → erDiagram-9861fffd-C4picwCJ.js} +1 -1
  38. package/assets/{erDiagram-Q2GNP2WA-zRo1erex.js → erDiagram-Q2GNP2WA-C0s9UR06.js} +1 -1
  39. package/assets/{flowDb-956e92f1-f4MK2XS7.js → flowDb-956e92f1-B5hwoPgC.js} +1 -1
  40. package/assets/{flowDiagram-66a62f08-_6Eo5sZi.js → flowDiagram-66a62f08-CrR2uteW.js} +1 -1
  41. package/assets/{flowDiagram-NV44I4VS-CFCClCRc.js → flowDiagram-NV44I4VS-DjrSimbb.js} +1 -1
  42. package/assets/flowDiagram-v2-96b9c2cf-DgGX-RZm.js +1 -0
  43. package/assets/{flowchart-elk-definition-4a651766-t4QJuK_b.js → flowchart-elk-definition-4a651766-BDOktHiR.js} +1 -1
  44. package/assets/{ganttDiagram-JELNMOA3-DIX2ad-2.js → ganttDiagram-JELNMOA3-4pTVMpLW.js} +1 -1
  45. package/assets/{ganttDiagram-c361ad54-dX5QjWrh.js → ganttDiagram-c361ad54-DRHnwNf3.js} +1 -1
  46. package/assets/{gitGraphDiagram-72cf32ee-BBZSqS6J.js → gitGraphDiagram-72cf32ee-C5lLz1AW.js} +1 -1
  47. package/assets/{gitGraphDiagram-NY62KEGX-C-FRyLSQ.js → gitGraphDiagram-NY62KEGX-RhL9MP5w.js} +1 -1
  48. package/assets/{graph-BpCqwwyJ.js → graph-CfNSLaMq.js} +1 -1
  49. package/assets/{graph-dwf5l9kJ.js → graph-bUdqaJE_.js} +1 -1
  50. package/assets/{grid-image-DRAUp_wj.js → grid-image-acNs-BIa.js} +1 -1
  51. package/assets/{has-BBSmRLAB.js → has-DqJVnicm.js} +1 -1
  52. package/assets/hasIn-BgAGChZR.js +1 -0
  53. package/assets/{index-3862675e-BmuXVGGA.js → index-3862675e-CGEqBqVJ.js} +1 -1
  54. package/assets/{index-DNIlXgAo.js → index-BJLqfOr0.js} +15 -15
  55. package/assets/{index-DEjUAZUe.js → index-BVXa7MXV.js} +2 -2
  56. package/assets/index-CB62HEjY.js +1 -0
  57. package/assets/index-CJy2IilV.js +13 -0
  58. package/assets/index-CNCXXhfY.css +1 -0
  59. package/assets/{index-DvbaH1wH.js → index-Ck1hF1QZ.js} +9 -9
  60. package/assets/index-D5zpPSZd.css +1 -0
  61. package/assets/index-DNBUgJ6m.js +6 -0
  62. package/assets/{index-eOV7y-oZ.js → index-DYqiMz6F.js} +1 -1
  63. package/assets/{index-_FyCDKGq.js → index-DwM7FTGg.js} +4 -4
  64. package/assets/{index-CISxTBJ3.js → index-Mr4gAcdX.js} +1 -1
  65. package/assets/index-UMnk2FgQ.css +1 -0
  66. package/assets/index-hu9MEe3D.js +2087 -0
  67. package/assets/{infoDiagram-WHAUD3N6-Cw6LtQsv.js → infoDiagram-WHAUD3N6-PQkd8OJe.js} +1 -1
  68. package/assets/{infoDiagram-f8f76790-suYKggbB.js → infoDiagram-f8f76790-DMu2j8xn.js} +1 -1
  69. package/assets/{inspiration-board-8CO8xK39.js → inspiration-board-DjFziX4I.js} +1 -1
  70. package/assets/{isEmpty-BZ44SF3F.js → isEmpty-lhEuKFnA.js} +1 -1
  71. package/assets/{journeyDiagram-49397b02-DLzRdow3.js → journeyDiagram-49397b02-c1Ox_S5e.js} +1 -1
  72. package/assets/{journeyDiagram-XKPGCS4Q-CcD6LNVi.js → journeyDiagram-XKPGCS4Q-C9TTNqlU.js} +1 -1
  73. package/assets/{kanban-definition-3W4ZIXB7-DWA3YqY9.js → kanban-definition-3W4ZIXB7-D48lDwmv.js} +1 -1
  74. package/assets/{layout-D8KZ21ze.js → layout-LQknPSHO.js} +1 -1
  75. package/assets/{layout-jxFX0Ar3.js → layout-k4A-djr0.js} +1 -1
  76. package/assets/{line-B3fXWiyE.js → line-DW5onvZ1.js} +1 -1
  77. package/assets/{linear-DsVcoO9v.js → linear-BD1p-SFP.js} +1 -1
  78. package/assets/{mermaid.core-ruaJ9d8x.js → mermaid.core-C9xtTvXS.js} +4 -4
  79. package/assets/{min-B6fh4WRE.js → min-DVwuybYx.js} +1 -1
  80. package/assets/{mindmap-definition-VGOIOE7T-BzeNa7DW.js → mindmap-definition-VGOIOE7T-CKq7aT8O.js} +1 -1
  81. package/assets/{mindmap-definition-fc14e90a-C3sElkm0.js → mindmap-definition-fc14e90a-ByyhB4pn.js} +1 -1
  82. package/assets/{photo-wall-splitter-C1GbxYBl.js → photo-wall-splitter-BIKUaBqT.js} +1 -1
  83. package/assets/{pick-DUB8w7iE.js → pick-DgQOmoYu.js} +1 -1
  84. package/assets/{pie-DAYMJpRO.js → pie-B6R_p3p3.js} +1 -1
  85. package/assets/{pieDiagram-8a3498a8-CZI3pF7g.js → pieDiagram-8a3498a8-DHhO5yag.js} +1 -1
  86. package/assets/{pieDiagram-ADFJNKIX-BqonG77Q.js → pieDiagram-ADFJNKIX-DN2VC8bQ.js} +1 -1
  87. package/assets/{quadrantDiagram-120e2f19-Q2bVMK-T.js → quadrantDiagram-120e2f19-DPjaVe-4.js} +1 -1
  88. package/assets/{quadrantDiagram-AYHSOK5B-yJZRIs-Q.js → quadrantDiagram-AYHSOK5B-CiJOSVPI.js} +1 -1
  89. package/assets/{requirementDiagram-UZGBJVZJ-3kaAkLjO.js → requirementDiagram-UZGBJVZJ-D2GEKncs.js} +1 -1
  90. package/assets/{requirementDiagram-deff3bca-DHOhXBYo.js → requirementDiagram-deff3bca-Bw6uhN2Z.js} +1 -1
  91. package/assets/{sankeyDiagram-04a897e0-3UqYNZg9.js → sankeyDiagram-04a897e0-glX-T11Z.js} +1 -1
  92. package/assets/{sankeyDiagram-TZEHDZUN-Ce844Tbc.js → sankeyDiagram-TZEHDZUN-B0sxBMgX.js} +1 -1
  93. package/assets/{sequenceDiagram-704730f1-CBXqjnXl.js → sequenceDiagram-704730f1-YOQcYS6k.js} +1 -1
  94. package/assets/{sequenceDiagram-WL72ISMW-DBN2cRGt.js → sequenceDiagram-WL72ISMW-CH7OsdKd.js} +1 -1
  95. package/assets/{settings-dialog-aU8BHcuS.js → settings-dialog-BhXTHyTf.js} +1 -1
  96. package/assets/{stateDiagram-587899a1-BGKPA37n.js → stateDiagram-587899a1-DB0HJUlE.js} +1 -1
  97. package/assets/{stateDiagram-FKZM4ZOC-Czg5Opf0.js → stateDiagram-FKZM4ZOC-D7dinatq.js} +1 -1
  98. package/assets/stateDiagram-v2-4FDKWEC3-34OgkUmW.js +1 -0
  99. package/assets/{stateDiagram-v2-d93cdb3a-DWU3UljE.js → stateDiagram-v2-d93cdb3a-CVqrr3U9.js} +1 -1
  100. package/assets/{styles-6aaf32cf-BVLDN8CD.js → styles-6aaf32cf-CJlj1Ty8.js} +1 -1
  101. package/assets/{styles-9a916d00-vSy8MhZp.js → styles-9a916d00-l8x77ac6.js} +1 -1
  102. package/assets/{styles-c10674c1-dzTvI8BU.js → styles-c10674c1-DixhXbk5.js} +1 -1
  103. package/assets/{svgDrawCommon-08f97a94-dptVwf62.js → svgDrawCommon-08f97a94-9oE5_zSZ.js} +1 -1
  104. package/assets/{timeline-definition-85554ec2-jKiT0ZaE.js → timeline-definition-85554ec2-BARq6AF9.js} +1 -1
  105. package/assets/{timeline-definition-IT6M3QCI-B2NoE4jH.js → timeline-definition-IT6M3QCI-B_wm5Yc_.js} +1 -1
  106. package/assets/{treemap-KMMF4GRG-1nrNbz-r.js → treemap-KMMF4GRG-CEXoIc79.js} +1 -1
  107. package/assets/ttd-dialog-BgDkODyr.js +47 -0
  108. package/assets/{ttd-dialog-DCapefb6.css → ttd-dialog-DhSikbX8.css} +1 -1
  109. package/assets/union-C2tc6S2B.js +1 -0
  110. package/assets/{upload-Crej215t.js → upload-DQt3EdOm.js} +1 -1
  111. package/assets/{video-recovery-service-Zb_336FQ.js → video-recovery-service-B0iISZ_W.js} +1 -1
  112. package/assets/{xychartDiagram-PRI3JC2R-UPkX0dfi.js → xychartDiagram-PRI3JC2R-gNLbCmE-.js} +1 -1
  113. package/assets/{xychartDiagram-e933f94c-BXYMaBZh.js → xychartDiagram-e933f94c-C1RYlf2W.js} +1 -1
  114. package/assets/zipObject-B1zPFQtb.js +1 -0
  115. package/package.json +1 -1
  116. package/sw-debug/app.js +7 -9
  117. package/sw-debug/console-entry.js +68 -26
  118. package/sw-debug/postmessage-entry.js +4 -3
  119. package/sw-debug/styles.css +58 -102
  120. package/sw-debug/utils.js +3 -6
  121. package/sw.js +7 -7
  122. package/version.json +2 -2
  123. package/assets/_baseUniq-CHS3E5If.js +0 -1
  124. package/assets/channel-Bew-Iahk.js +0 -1
  125. package/assets/classDiagram-2ON5EDUG-DIttp4Yk.js +0 -1
  126. package/assets/classDiagram-v2-WZHVMYZB-DIttp4Yk.js +0 -1
  127. package/assets/clone-Y0952eQY.js +0 -1
  128. package/assets/flowDiagram-v2-96b9c2cf-Dn2WmcvX.js +0 -1
  129. package/assets/hasIn-CGUnHN5L.js +0 -1
  130. package/assets/index-B2dvADz8.css +0 -1
  131. package/assets/index-DCs3C-gs.js +0 -1
  132. package/assets/index-Ds1UcDjn.js +0 -2064
  133. package/assets/stateDiagram-v2-4FDKWEC3-4Ev4KuVZ.js +0 -1
  134. package/assets/ttd-dialog-WN-s4x87.js +0 -47
  135. package/assets/union-B2D_ldts.js +0 -1
  136. package/assets/zipObject-bwVIVuzi.js +0 -1
@@ -21,6 +21,7 @@ function formatStack(stack) {
21
21
 
22
22
  /**
23
23
  * Create a console log entry DOM element
24
+ * Uses the same styles as Fetch logs for consistency
24
25
  * @param {object} log
25
26
  * @param {boolean} isExpanded - Initial expanded state for stack
26
27
  * @param {Function} onToggle - Callback when expand state changes (id, expanded)
@@ -28,46 +29,87 @@ function formatStack(stack) {
28
29
  */
29
30
  export function createConsoleEntry(log, isExpanded = false, onToggle = null) {
30
31
  const entry = document.createElement('div');
31
- entry.className = `console-entry ${log.logLevel || 'log'}`;
32
+ const level = log.logLevel || 'log';
33
+ entry.className = `log-entry console-entry ${level}` + (isExpanded ? ' expanded' : '');
32
34
  entry.dataset.id = log.id;
33
35
 
34
36
  const hasStack = log.logStack && log.logStack.trim();
35
- const stackToggle = hasStack
36
- ? `<span class="stack-toggle" title="展开/收起堆栈"><span class="arrow">▶</span> 堆栈</span>`
37
- : '';
37
+
38
+ // Map log level to status class
39
+ const levelStatusClass = {
40
+ 'error': 'error',
41
+ 'warn': 'redirect',
42
+ 'info': 'success',
43
+ 'log': 'pending',
44
+ 'debug': 'pending',
45
+ }[level] || 'pending';
46
+
47
+ // Show full message in header (will wrap if needed)
48
+ const messagePreview = log.logMessage || '-';
38
49
 
39
50
  entry.innerHTML = `
40
- <div class="console-header">
51
+ <div class="log-header">
52
+ ${hasStack ? `<span class="log-toggle" title="展开/收起详情"><span class="arrow">▶</span></span>` : '<span style="width: 16px; display: inline-block;"></span>'}
41
53
  <span class="log-time">${formatTime(log.timestamp)}</span>
42
- <span class="console-level ${log.logLevel || 'log'}">${(log.logLevel || 'log').toUpperCase()}</span>
43
- <span class="console-message">${escapeHtml(log.logMessage || '')}</span>
54
+ <span class="log-status ${levelStatusClass}">${level.toUpperCase()}</span>
55
+ <span class="log-url" title="${escapeHtml(log.logMessage || '')}">${escapeHtml(messagePreview)}</span>
44
56
  </div>
45
- ${log.logSource ? `<div class="console-source">${escapeHtml(log.logSource)}</div>` : ''}
46
- ${log.url ? `<div class="console-source">页面: ${escapeHtml(log.url)}</div>` : ''}
47
- ${hasStack ? `
48
- <div class="console-stack-container${isExpanded ? ' expanded' : ''}">
49
- ${stackToggle}
50
- <pre class="console-stack">${formatStack(log.logStack)}</pre>
57
+ ${hasStack || log.logSource || log.url ? `
58
+ <div class="log-details">
59
+ ${log.logMessage ? `
60
+ <div class="detail-section">
61
+ <h4>完整消息</h4>
62
+ <pre>${escapeHtml(log.logMessage)}</pre>
63
+ </div>
64
+ ` : ''}
65
+ ${log.logSource ? `
66
+ <div class="detail-section">
67
+ <h4>来源</h4>
68
+ <pre>${escapeHtml(log.logSource)}</pre>
69
+ </div>
70
+ ` : ''}
71
+ ${log.url ? `
72
+ <div class="detail-section">
73
+ <h4>页面</h4>
74
+ <pre>${escapeHtml(log.url)}</pre>
75
+ </div>
76
+ ` : ''}
77
+ ${hasStack ? `
78
+ <div class="detail-section">
79
+ <h4>堆栈</h4>
80
+ <pre style="color: var(--error-color);">${formatStack(log.logStack)}</pre>
81
+ </div>
82
+ ` : ''}
51
83
  </div>
52
84
  ` : ''}
53
85
  `;
54
86
 
55
- // Add toggle functionality for stack
56
- if (hasStack) {
57
- const stackContainer = entry.querySelector('.console-stack-container');
58
- const toggle = entry.querySelector('.stack-toggle');
59
-
60
- if (toggle && stackContainer) {
61
- toggle.addEventListener('click', (e) => {
62
- e.stopPropagation();
63
- const isNowExpanded = stackContainer.classList.toggle('expanded');
64
- if (onToggle) {
65
- onToggle(log.id, isNowExpanded);
66
- }
67
- });
87
+ // Toggle function - same as Fetch logs
88
+ const toggleExpand = () => {
89
+ const isNowExpanded = entry.classList.toggle('expanded');
90
+ if (onToggle) {
91
+ onToggle(log.id, isNowExpanded);
68
92
  }
93
+ };
94
+
95
+ // Toggle expand/collapse on button click
96
+ const toggleBtn = entry.querySelector('.log-toggle');
97
+ if (toggleBtn) {
98
+ toggleBtn.addEventListener('click', (e) => {
99
+ e.stopPropagation();
100
+ toggleExpand();
101
+ });
69
102
  }
70
103
 
104
+ // Toggle on header click (except toggle button)
105
+ const header = entry.querySelector('.log-header');
106
+ header.addEventListener('click', (e) => {
107
+ if (e.target.closest('.log-toggle')) return;
108
+ if (hasStack || log.logSource || log.url) {
109
+ toggleExpand();
110
+ }
111
+ });
112
+
71
113
  return entry;
72
114
  }
73
115
 
@@ -26,7 +26,7 @@ function formatData(data, maxLength = 500) {
26
26
  }
27
27
 
28
28
  /**
29
- * Get a short preview of the message data
29
+ * Get a preview of the message data (will wrap if needed via CSS)
30
30
  * @param {any} data
31
31
  * @returns {string}
32
32
  */
@@ -35,8 +35,9 @@ function getDataPreview(data) {
35
35
 
36
36
  try {
37
37
  const str = JSON.stringify(data);
38
- if (str.length > 60) {
39
- return escapeHtml(str.slice(0, 60)) + '...';
38
+ // Show more content, let CSS handle overflow
39
+ if (str.length > 200) {
40
+ return escapeHtml(str.slice(0, 200)) + '...';
40
41
  }
41
42
  return escapeHtml(str);
42
43
  } catch {
@@ -625,8 +625,9 @@ button .icon-svg {
625
625
 
626
626
  .log-header {
627
627
  display: flex;
628
- align-items: center;
628
+ align-items: flex-start;
629
629
  gap: 6px;
630
+ flex-wrap: wrap;
630
631
  }
631
632
 
632
633
  .log-time {
@@ -642,8 +643,9 @@ button .icon-svg {
642
643
  border-radius: 3px;
643
644
  font-size: 10px;
644
645
  font-weight: 600;
645
- background: var(--primary-color);
646
- color: #fff;
646
+ background: var(--primary-light);
647
+ color: var(--primary-color);
648
+ border: 1px solid var(--primary-color);
647
649
  letter-spacing: 0.02em;
648
650
  }
649
651
 
@@ -652,26 +654,31 @@ button .icon-svg {
652
654
  border-radius: 3px;
653
655
  font-size: 10px;
654
656
  font-weight: 600;
657
+ border: 1px solid;
655
658
  }
656
659
 
657
660
  .log-status.success {
658
661
  background: var(--success-light);
659
662
  color: var(--success-color);
663
+ border-color: var(--success-color);
660
664
  }
661
665
 
662
666
  .log-status.redirect {
663
667
  background: var(--warning-light);
664
668
  color: var(--warning-color);
669
+ border-color: var(--warning-color);
665
670
  }
666
671
 
667
672
  .log-status.error {
668
673
  background: var(--error-light);
669
674
  color: var(--error-color);
675
+ border-color: var(--error-color);
670
676
  }
671
677
 
672
678
  .log-status.network-error {
673
679
  background: var(--error-light);
674
680
  color: var(--error-color);
681
+ border-color: var(--error-color);
675
682
  font-size: 9px;
676
683
  padding: 2px 5px;
677
684
  max-width: 120px;
@@ -682,36 +689,40 @@ button .icon-svg {
682
689
  }
683
690
 
684
691
  .log-status.pending {
685
- background: rgba(139, 92, 246, 0.15);
686
- color: #8b5cf6;
692
+ background: var(--bg-tertiary);
693
+ color: var(--text-muted);
694
+ border-color: var(--border-color);
687
695
  font-style: italic;
688
696
  }
689
697
 
698
+ /* 统一的类型标签样式 */
690
699
  .log-type-badge {
691
700
  padding: 1px 6px;
692
701
  border-radius: 3px;
693
702
  font-size: 10px;
694
- background: var(--bg-primary);
703
+ font-weight: 500;
704
+ background: var(--bg-tertiary);
695
705
  color: var(--text-secondary);
696
706
  border: 1px solid var(--border-color);
707
+ white-space: nowrap;
697
708
  }
698
709
 
699
710
  .log-type-badge.xhr {
700
- background: var(--accent-color);
701
- color: #fff;
702
- border: none;
711
+ background: var(--primary-light);
712
+ color: var(--primary-color);
713
+ border-color: var(--primary-color);
703
714
  }
704
715
 
705
716
  .log-type-badge.sw-internal {
706
- background: #8250df;
707
- color: #fff;
708
- border: none;
717
+ background: rgba(90, 79, 207, 0.1);
718
+ color: var(--info-color);
719
+ border-color: var(--info-color);
709
720
  }
710
721
 
711
722
  .log-type-badge.passthrough {
712
- background: var(--text-muted);
713
- color: #fff;
714
- border: none;
723
+ background: var(--bg-tertiary);
724
+ color: var(--text-muted);
725
+ border-color: var(--border-color);
715
726
  }
716
727
 
717
728
  .log-purpose {
@@ -722,13 +733,13 @@ button .icon-svg {
722
733
 
723
734
  .log-url {
724
735
  flex: 1;
725
- overflow: hidden;
726
- text-overflow: ellipsis;
727
- white-space: nowrap;
736
+ min-width: 0;
728
737
  color: var(--text-secondary);
729
738
  font-family: 'SF Mono', Monaco, Consolas, monospace;
730
739
  font-size: 11px;
731
740
  transition: color 0.1s ease;
741
+ word-break: break-word;
742
+ line-height: 1.4;
732
743
  }
733
744
 
734
745
  .log-entry:hover .log-url {
@@ -751,15 +762,17 @@ button .icon-svg {
751
762
  font-weight: 600;
752
763
  background: var(--success-light);
753
764
  color: var(--success-color);
765
+ border: 1px solid var(--success-color);
754
766
  }
755
767
 
756
768
  .log-streaming {
757
769
  padding: 1px 4px;
758
770
  border-radius: 3px;
759
771
  font-size: 9px;
760
- background: rgba(139, 92, 246, 0.15);
761
- color: #8b5cf6;
762
772
  font-weight: 600;
773
+ background: rgba(90, 79, 207, 0.1);
774
+ color: var(--info-color);
775
+ border: 1px solid var(--info-color);
763
776
  }
764
777
 
765
778
  /* Log Toggle */
@@ -966,22 +979,15 @@ button .icon-svg {
966
979
  background: repeating-conic-gradient(#f0f0f0 0% 25%, #fff 0% 50%) 50% / 16px 16px;
967
980
  }
968
981
 
969
- /* Console Entry */
970
- .console-entry {
971
- padding: 8px 16px;
972
- border-bottom: 1px solid var(--border-color);
973
- font-family: 'SF Mono', Monaco, Consolas, monospace;
974
- font-size: 12px;
975
- }
976
-
982
+ /* Console Entry - 继承 log-entry 样式,添加左侧边框指示日志级别 */
977
983
  .console-entry.warn {
978
- background: rgba(210, 153, 34, 0.1);
979
984
  border-left: 3px solid var(--warning-color);
985
+ background: var(--warning-light);
980
986
  }
981
987
 
982
988
  .console-entry.error {
983
- background: rgba(248, 81, 73, 0.1);
984
989
  border-left: 3px solid var(--error-color);
990
+ background: var(--error-light);
985
991
  }
986
992
 
987
993
  .console-entry.info {
@@ -993,54 +999,8 @@ button .icon-svg {
993
999
  }
994
1000
 
995
1001
  .console-entry.debug {
996
- border-left: 3px solid #8250df;
997
- background: rgba(130, 80, 223, 0.05);
998
- }
999
-
1000
- .console-header {
1001
- display: flex;
1002
- align-items: flex-start;
1003
- gap: 10px;
1004
- }
1005
-
1006
- .console-level {
1007
- padding: 2px 6px;
1008
- border-radius: 4px;
1009
- font-size: 10px;
1010
- font-weight: 600;
1011
- text-transform: uppercase;
1012
- flex-shrink: 0;
1013
- }
1014
-
1015
- .console-level.warn {
1016
- background: var(--warning-color);
1017
- color: #fff;
1018
- }
1019
-
1020
- .console-level.error {
1021
- background: var(--error-color);
1022
- color: #fff;
1023
- }
1024
-
1025
- .console-level.info {
1026
- background: var(--info-color);
1027
- color: #fff;
1028
- }
1029
-
1030
- .console-level.log {
1031
- background: var(--text-muted);
1032
- color: #fff;
1033
- }
1034
-
1035
- .console-level.debug {
1036
- background: #8250df;
1037
- color: #fff;
1038
- }
1039
-
1040
- .console-message {
1041
- flex: 1;
1042
- white-space: pre-wrap;
1043
- word-break: break-all;
1002
+ border-left: 3px solid var(--info-color);
1003
+ background: rgba(90, 79, 207, 0.05);
1044
1004
  }
1045
1005
 
1046
1006
  .console-source {
@@ -1262,9 +1222,10 @@ button .icon-svg {
1262
1222
 
1263
1223
  .pm-header {
1264
1224
  display: flex;
1265
- align-items: center;
1225
+ align-items: flex-start;
1266
1226
  gap: 6px;
1267
1227
  cursor: pointer;
1228
+ flex-wrap: wrap;
1268
1229
  }
1269
1230
 
1270
1231
  /* 复用 .log-toggle 样式 */
@@ -1317,16 +1278,19 @@ button .icon-svg {
1317
1278
  font-size: 10px;
1318
1279
  font-weight: 600;
1319
1280
  letter-spacing: 0.02em;
1281
+ border: 1px solid;
1320
1282
  }
1321
1283
 
1322
1284
  .pm-direction.send {
1323
- background: var(--primary-color);
1324
- color: #fff;
1285
+ background: var(--primary-light);
1286
+ color: var(--primary-color);
1287
+ border-color: var(--primary-color);
1325
1288
  }
1326
1289
 
1327
1290
  .pm-direction.receive {
1328
- background: var(--success-color);
1329
- color: #fff;
1291
+ background: var(--success-light);
1292
+ color: var(--success-color);
1293
+ border-color: var(--success-color);
1330
1294
  }
1331
1295
 
1332
1296
  .pm-direction-icon {
@@ -1346,14 +1310,12 @@ button .icon-svg {
1346
1310
 
1347
1311
  .pm-preview {
1348
1312
  flex: 1;
1349
- overflow: hidden;
1350
- text-overflow: ellipsis;
1351
- white-space: nowrap;
1352
- color: var(--text-secondary);
1353
- font-family: 'SF Mono', Monaco, Consolas, monospace;
1354
- font-size: 11px;
1313
+ min-width: 0;
1355
1314
  color: var(--text-muted);
1315
+ font-family: 'SF Mono', Monaco, Consolas, monospace;
1356
1316
  font-size: 11px;
1317
+ word-break: break-word;
1318
+ line-height: 1.4;
1357
1319
  }
1358
1320
 
1359
1321
  .pm-details {
@@ -1589,32 +1551,22 @@ button .icon-svg {
1589
1551
  /* 继承 .log-entry 的基础样式,不需要额外边框 */
1590
1552
  }
1591
1553
 
1592
- .memory-entry .log-type-badge {
1593
- padding: 2px 6px;
1594
- border-radius: 3px;
1595
- font-size: 10px;
1596
- font-weight: 600;
1597
- background: var(--bg-tertiary);
1598
- color: var(--text-secondary);
1599
- border: 1px solid var(--border-color);
1600
- white-space: nowrap;
1601
- }
1602
-
1603
1554
  .memory-entry .log-type-badge.error {
1604
1555
  background: var(--error-light);
1605
1556
  color: var(--error-color);
1606
- border-color: transparent;
1557
+ border-color: var(--error-color);
1607
1558
  }
1608
1559
 
1609
1560
  .memory-entry .log-type-badge.warning {
1610
1561
  background: var(--warning-light);
1611
1562
  color: var(--warning-color);
1612
- border-color: transparent;
1563
+ border-color: var(--warning-color);
1613
1564
  }
1614
1565
 
1615
1566
  .memory-entry .log-type-badge.normal {
1616
1567
  background: var(--bg-tertiary);
1617
1568
  color: var(--text-secondary);
1569
+ border-color: var(--border-color);
1618
1570
  }
1619
1571
 
1620
1572
  /* 内存使用徽章 */
@@ -1624,21 +1576,25 @@ button .icon-svg {
1624
1576
  font-size: 10px;
1625
1577
  font-weight: 600;
1626
1578
  font-family: 'SF Mono', Monaco, Consolas, monospace;
1579
+ border: 1px solid;
1627
1580
  }
1628
1581
 
1629
1582
  .log-memory-badge.normal {
1630
1583
  background: var(--success-light);
1631
1584
  color: var(--success-color);
1585
+ border-color: var(--success-color);
1632
1586
  }
1633
1587
 
1634
1588
  .log-memory-badge.warning {
1635
1589
  background: var(--warning-light);
1636
1590
  color: var(--warning-color);
1591
+ border-color: var(--warning-color);
1637
1592
  }
1638
1593
 
1639
1594
  .log-memory-badge.critical {
1640
1595
  background: var(--error-light);
1641
1596
  color: var(--error-color);
1597
+ border-color: var(--error-color);
1642
1598
  }
1643
1599
 
1644
1600
  /* 内存日志行内信息 */
package/sw-debug/utils.js CHANGED
@@ -80,15 +80,12 @@ export function formatJsonOrText(text) {
80
80
  * @param {number} maxLength
81
81
  * @returns {string}
82
82
  */
83
- export function extractDisplayUrl(url, maxLength = 80) {
83
+ export function extractDisplayUrl(url) {
84
84
  if (!url) return '-';
85
85
  try {
86
86
  const urlObj = new URL(url);
87
- let displayUrl = urlObj.pathname + urlObj.search;
88
- if (displayUrl.length > maxLength) {
89
- displayUrl = displayUrl.substring(0, maxLength) + '...';
90
- }
91
- return displayUrl;
87
+ // Return full path without truncation (CSS will handle overflow)
88
+ return urlObj.pathname + urlObj.search;
92
89
  } catch {
93
90
  return url;
94
91
  }