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.
- package/README.md +3 -3
- package/assets/{ChatMessagesArea-CAnmzKeA.js → ChatMessagesArea-DZUaOu9O.js} +3 -3
- package/assets/{Serializer-DPCLjt6U.js → Serializer-C_KNMVa5.js} +1 -1
- package/assets/{ToolboxDrawer-D-ZDs49h.js → ToolboxDrawer-DMs6NEQ9.js} +18 -18
- package/assets/_baseUniq-CkDEmepm.js +1 -0
- package/assets/{advancedFormat-Chr195ZY.js → advancedFormat-DDVKqCcb.js} +1 -1
- package/assets/{ai-analyze-D3V-tpIV.js → ai-analyze-CdMnSdcj.js} +1 -1
- package/assets/{arc-lNLKXIKC.js → arc-DxooX0JA.js} +1 -1
- package/assets/{architectureDiagram-VXUJARFQ-CCzBT9XK.js → architectureDiagram-VXUJARFQ-By9X2_fg.js} +1 -1
- package/assets/{batch-image-generation-CgR-a8Ii.js → batch-image-generation-BNCavPE3.js} +1 -1
- package/assets/{blockDiagram-38ab4fdb-CbcE_DRD.js → blockDiagram-38ab4fdb-CaSq1se3.js} +1 -1
- package/assets/{blockDiagram-VD42YOAC-CgcfCyW1.js → blockDiagram-VD42YOAC-BikDTbXB.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-DqzYo_xg.js → c4Diagram-3d4e48cf-B4tV12g-.js} +1 -1
- package/assets/{c4Diagram-YG6GDRKO-BTZAWhX1.js → c4Diagram-YG6GDRKO-JMT--oeK.js} +1 -1
- package/assets/channel-C_nOy9ji.js +1 -0
- package/assets/{chunk-4BX2VUAB-DH-I_3Sl.js → chunk-4BX2VUAB-BPeyyZbJ.js} +1 -1
- package/assets/{chunk-55IACEB6-BJKBSn0v.js → chunk-55IACEB6-Ccwuu0V6.js} +1 -1
- package/assets/{chunk-B4BG7PRW-BIhB4ChZ.js → chunk-B4BG7PRW-DLAZ694p.js} +1 -1
- package/assets/{chunk-DI55MBZ5-NlFLhYIc.js → chunk-DI55MBZ5-B4N06CXR.js} +1 -1
- package/assets/{chunk-FMBD7UC4-QVfOPBEJ.js → chunk-FMBD7UC4-DhF98R8b.js} +1 -1
- package/assets/{chunk-QN33PNHL-C_DotWZ6.js → chunk-QN33PNHL-DRmv0Kl8.js} +1 -1
- package/assets/{chunk-QZHKN3VN-Ei6ogyMg.js → chunk-QZHKN3VN-NK4FKL-2.js} +1 -1
- package/assets/{chunk-TZMSLE5B-CKPTgIMs.js → chunk-TZMSLE5B-C3pBP9gO.js} +1 -1
- package/assets/classDiagram-2ON5EDUG-LTjKb48E.js +1 -0
- package/assets/{classDiagram-70f12bd4-DeAD0Lw4.js → classDiagram-70f12bd4-CzjJ3zBX.js} +1 -1
- package/assets/classDiagram-v2-WZHVMYZB-LTjKb48E.js +1 -0
- package/assets/{classDiagram-v2-f2320105-DR43MMrr.js → classDiagram-v2-f2320105-4itfn1co.js} +1 -1
- package/assets/clone-aw5zGyML.js +1 -0
- package/assets/{cose-bilkent-S5V4N54A-CE31mcuy.js → cose-bilkent-S5V4N54A-D40X2DSY.js} +1 -1
- package/assets/{createText-2e5e7dd3-DuyGuD-n.js → createText-2e5e7dd3-DhE7DCyc.js} +1 -1
- package/assets/{cytoscape-cose-bilkent-DTqUuT3l.js → cytoscape-cose-bilkent-BsYgDGHx.js} +1 -1
- package/assets/{dagre-6UL2VRFP-CuJmVGl3.js → dagre-6UL2VRFP-uiP7xLTe.js} +1 -1
- package/assets/{diagram-PSM6KHXK-D5Y5dlL9.js → diagram-PSM6KHXK-BUdQQ4mi.js} +1 -1
- package/assets/{diagram-QEK2KX5R-DOWAGxHq.js → diagram-QEK2KX5R-Da7c7682.js} +1 -1
- package/assets/{diagram-S2PKOQOG-ykMhl6fc.js → diagram-S2PKOQOG-B6hGrurD.js} +1 -1
- package/assets/{edges-e0da2a9e-BpsZLv9t.js → edges-e0da2a9e-BzY0YHdX.js} +1 -1
- package/assets/{erDiagram-9861fffd-rZLPDBgy.js → erDiagram-9861fffd-C4picwCJ.js} +1 -1
- package/assets/{erDiagram-Q2GNP2WA-zRo1erex.js → erDiagram-Q2GNP2WA-C0s9UR06.js} +1 -1
- package/assets/{flowDb-956e92f1-f4MK2XS7.js → flowDb-956e92f1-B5hwoPgC.js} +1 -1
- package/assets/{flowDiagram-66a62f08-_6Eo5sZi.js → flowDiagram-66a62f08-CrR2uteW.js} +1 -1
- package/assets/{flowDiagram-NV44I4VS-CFCClCRc.js → flowDiagram-NV44I4VS-DjrSimbb.js} +1 -1
- package/assets/flowDiagram-v2-96b9c2cf-DgGX-RZm.js +1 -0
- package/assets/{flowchart-elk-definition-4a651766-t4QJuK_b.js → flowchart-elk-definition-4a651766-BDOktHiR.js} +1 -1
- package/assets/{ganttDiagram-JELNMOA3-DIX2ad-2.js → ganttDiagram-JELNMOA3-4pTVMpLW.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-dX5QjWrh.js → ganttDiagram-c361ad54-DRHnwNf3.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-BBZSqS6J.js → gitGraphDiagram-72cf32ee-C5lLz1AW.js} +1 -1
- package/assets/{gitGraphDiagram-NY62KEGX-C-FRyLSQ.js → gitGraphDiagram-NY62KEGX-RhL9MP5w.js} +1 -1
- package/assets/{graph-BpCqwwyJ.js → graph-CfNSLaMq.js} +1 -1
- package/assets/{graph-dwf5l9kJ.js → graph-bUdqaJE_.js} +1 -1
- package/assets/{grid-image-DRAUp_wj.js → grid-image-acNs-BIa.js} +1 -1
- package/assets/{has-BBSmRLAB.js → has-DqJVnicm.js} +1 -1
- package/assets/hasIn-BgAGChZR.js +1 -0
- package/assets/{index-3862675e-BmuXVGGA.js → index-3862675e-CGEqBqVJ.js} +1 -1
- package/assets/{index-DNIlXgAo.js → index-BJLqfOr0.js} +15 -15
- package/assets/{index-DEjUAZUe.js → index-BVXa7MXV.js} +2 -2
- package/assets/index-CB62HEjY.js +1 -0
- package/assets/index-CJy2IilV.js +13 -0
- package/assets/index-CNCXXhfY.css +1 -0
- package/assets/{index-DvbaH1wH.js → index-Ck1hF1QZ.js} +9 -9
- package/assets/index-D5zpPSZd.css +1 -0
- package/assets/index-DNBUgJ6m.js +6 -0
- package/assets/{index-eOV7y-oZ.js → index-DYqiMz6F.js} +1 -1
- package/assets/{index-_FyCDKGq.js → index-DwM7FTGg.js} +4 -4
- package/assets/{index-CISxTBJ3.js → index-Mr4gAcdX.js} +1 -1
- package/assets/index-UMnk2FgQ.css +1 -0
- package/assets/index-hu9MEe3D.js +2087 -0
- package/assets/{infoDiagram-WHAUD3N6-Cw6LtQsv.js → infoDiagram-WHAUD3N6-PQkd8OJe.js} +1 -1
- package/assets/{infoDiagram-f8f76790-suYKggbB.js → infoDiagram-f8f76790-DMu2j8xn.js} +1 -1
- package/assets/{inspiration-board-8CO8xK39.js → inspiration-board-DjFziX4I.js} +1 -1
- package/assets/{isEmpty-BZ44SF3F.js → isEmpty-lhEuKFnA.js} +1 -1
- package/assets/{journeyDiagram-49397b02-DLzRdow3.js → journeyDiagram-49397b02-c1Ox_S5e.js} +1 -1
- package/assets/{journeyDiagram-XKPGCS4Q-CcD6LNVi.js → journeyDiagram-XKPGCS4Q-C9TTNqlU.js} +1 -1
- package/assets/{kanban-definition-3W4ZIXB7-DWA3YqY9.js → kanban-definition-3W4ZIXB7-D48lDwmv.js} +1 -1
- package/assets/{layout-D8KZ21ze.js → layout-LQknPSHO.js} +1 -1
- package/assets/{layout-jxFX0Ar3.js → layout-k4A-djr0.js} +1 -1
- package/assets/{line-B3fXWiyE.js → line-DW5onvZ1.js} +1 -1
- package/assets/{linear-DsVcoO9v.js → linear-BD1p-SFP.js} +1 -1
- package/assets/{mermaid.core-ruaJ9d8x.js → mermaid.core-C9xtTvXS.js} +4 -4
- package/assets/{min-B6fh4WRE.js → min-DVwuybYx.js} +1 -1
- package/assets/{mindmap-definition-VGOIOE7T-BzeNa7DW.js → mindmap-definition-VGOIOE7T-CKq7aT8O.js} +1 -1
- package/assets/{mindmap-definition-fc14e90a-C3sElkm0.js → mindmap-definition-fc14e90a-ByyhB4pn.js} +1 -1
- package/assets/{photo-wall-splitter-C1GbxYBl.js → photo-wall-splitter-BIKUaBqT.js} +1 -1
- package/assets/{pick-DUB8w7iE.js → pick-DgQOmoYu.js} +1 -1
- package/assets/{pie-DAYMJpRO.js → pie-B6R_p3p3.js} +1 -1
- package/assets/{pieDiagram-8a3498a8-CZI3pF7g.js → pieDiagram-8a3498a8-DHhO5yag.js} +1 -1
- package/assets/{pieDiagram-ADFJNKIX-BqonG77Q.js → pieDiagram-ADFJNKIX-DN2VC8bQ.js} +1 -1
- package/assets/{quadrantDiagram-120e2f19-Q2bVMK-T.js → quadrantDiagram-120e2f19-DPjaVe-4.js} +1 -1
- package/assets/{quadrantDiagram-AYHSOK5B-yJZRIs-Q.js → quadrantDiagram-AYHSOK5B-CiJOSVPI.js} +1 -1
- package/assets/{requirementDiagram-UZGBJVZJ-3kaAkLjO.js → requirementDiagram-UZGBJVZJ-D2GEKncs.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-DHOhXBYo.js → requirementDiagram-deff3bca-Bw6uhN2Z.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-3UqYNZg9.js → sankeyDiagram-04a897e0-glX-T11Z.js} +1 -1
- package/assets/{sankeyDiagram-TZEHDZUN-Ce844Tbc.js → sankeyDiagram-TZEHDZUN-B0sxBMgX.js} +1 -1
- package/assets/{sequenceDiagram-704730f1-CBXqjnXl.js → sequenceDiagram-704730f1-YOQcYS6k.js} +1 -1
- package/assets/{sequenceDiagram-WL72ISMW-DBN2cRGt.js → sequenceDiagram-WL72ISMW-CH7OsdKd.js} +1 -1
- package/assets/{settings-dialog-aU8BHcuS.js → settings-dialog-BhXTHyTf.js} +1 -1
- package/assets/{stateDiagram-587899a1-BGKPA37n.js → stateDiagram-587899a1-DB0HJUlE.js} +1 -1
- package/assets/{stateDiagram-FKZM4ZOC-Czg5Opf0.js → stateDiagram-FKZM4ZOC-D7dinatq.js} +1 -1
- package/assets/stateDiagram-v2-4FDKWEC3-34OgkUmW.js +1 -0
- package/assets/{stateDiagram-v2-d93cdb3a-DWU3UljE.js → stateDiagram-v2-d93cdb3a-CVqrr3U9.js} +1 -1
- package/assets/{styles-6aaf32cf-BVLDN8CD.js → styles-6aaf32cf-CJlj1Ty8.js} +1 -1
- package/assets/{styles-9a916d00-vSy8MhZp.js → styles-9a916d00-l8x77ac6.js} +1 -1
- package/assets/{styles-c10674c1-dzTvI8BU.js → styles-c10674c1-DixhXbk5.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-dptVwf62.js → svgDrawCommon-08f97a94-9oE5_zSZ.js} +1 -1
- package/assets/{timeline-definition-85554ec2-jKiT0ZaE.js → timeline-definition-85554ec2-BARq6AF9.js} +1 -1
- package/assets/{timeline-definition-IT6M3QCI-B2NoE4jH.js → timeline-definition-IT6M3QCI-B_wm5Yc_.js} +1 -1
- package/assets/{treemap-KMMF4GRG-1nrNbz-r.js → treemap-KMMF4GRG-CEXoIc79.js} +1 -1
- package/assets/ttd-dialog-BgDkODyr.js +47 -0
- package/assets/{ttd-dialog-DCapefb6.css → ttd-dialog-DhSikbX8.css} +1 -1
- package/assets/union-C2tc6S2B.js +1 -0
- package/assets/{upload-Crej215t.js → upload-DQt3EdOm.js} +1 -1
- package/assets/{video-recovery-service-Zb_336FQ.js → video-recovery-service-B0iISZ_W.js} +1 -1
- package/assets/{xychartDiagram-PRI3JC2R-UPkX0dfi.js → xychartDiagram-PRI3JC2R-gNLbCmE-.js} +1 -1
- package/assets/{xychartDiagram-e933f94c-BXYMaBZh.js → xychartDiagram-e933f94c-C1RYlf2W.js} +1 -1
- package/assets/zipObject-B1zPFQtb.js +1 -0
- package/package.json +1 -1
- package/sw-debug/app.js +7 -9
- package/sw-debug/console-entry.js +68 -26
- package/sw-debug/postmessage-entry.js +4 -3
- package/sw-debug/styles.css +58 -102
- package/sw-debug/utils.js +3 -6
- package/sw.js +7 -7
- package/version.json +2 -2
- package/assets/_baseUniq-CHS3E5If.js +0 -1
- package/assets/channel-Bew-Iahk.js +0 -1
- package/assets/classDiagram-2ON5EDUG-DIttp4Yk.js +0 -1
- package/assets/classDiagram-v2-WZHVMYZB-DIttp4Yk.js +0 -1
- package/assets/clone-Y0952eQY.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-Dn2WmcvX.js +0 -1
- package/assets/hasIn-CGUnHN5L.js +0 -1
- package/assets/index-B2dvADz8.css +0 -1
- package/assets/index-DCs3C-gs.js +0 -1
- package/assets/index-Ds1UcDjn.js +0 -2064
- package/assets/stateDiagram-v2-4FDKWEC3-4Ev4KuVZ.js +0 -1
- package/assets/ttd-dialog-WN-s4x87.js +0 -47
- package/assets/union-B2D_ldts.js +0 -1
- 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
|
-
|
|
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
|
-
|
|
36
|
-
|
|
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="
|
|
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="
|
|
43
|
-
<span class="
|
|
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
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
//
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
|
|
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
|
|
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
|
-
|
|
39
|
-
|
|
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 {
|
package/sw-debug/styles.css
CHANGED
|
@@ -625,8 +625,9 @@ button .icon-svg {
|
|
|
625
625
|
|
|
626
626
|
.log-header {
|
|
627
627
|
display: flex;
|
|
628
|
-
align-items:
|
|
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-
|
|
646
|
-
color:
|
|
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:
|
|
686
|
-
color:
|
|
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
|
-
|
|
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(--
|
|
701
|
-
color:
|
|
702
|
-
border:
|
|
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:
|
|
707
|
-
color:
|
|
708
|
-
border:
|
|
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(--
|
|
713
|
-
color:
|
|
714
|
-
border:
|
|
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
|
-
|
|
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
|
|
997
|
-
background: rgba(
|
|
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:
|
|
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-
|
|
1324
|
-
color:
|
|
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-
|
|
1329
|
-
color:
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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
|
|
83
|
+
export function extractDisplayUrl(url) {
|
|
84
84
|
if (!url) return '-';
|
|
85
85
|
try {
|
|
86
86
|
const urlObj = new URL(url);
|
|
87
|
-
|
|
88
|
-
|
|
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
|
}
|