Files
wecome-openclaw-client/dist_package/win-unpacked/resources/app/static/css/main.ee277d4e.css.map
徐总 2552c82b97 fix: 修复测试消息重复显示和详细日志输出
- 删除重复的测试消息通信模块
- 添加 openclaw-log 事件将详细日志发送到界面
- 界面监听并显示 OpenClaw 详细日志
- 日志包含:连接状态、发送请求、接收消息、响应状态、错误诊断

现在连接 OpenClaw 时会看到详细日志:
[OpenClaw] ========== 开始连接 ==========
[OpenClaw]  WebSocket 连接已建立 | 就绪状态:1
[OpenClaw] 📤 发送 connect 请求...
[OpenClaw] 📥 收到消息 (长度:123 字节)
[OpenClaw] 响应: 成功 /  失败
2026-03-10 02:16:26 +08:00

1 line
7.6 KiB
Plaintext

{"version":3,"file":"static/css/main.ee277d4e.css","mappings":"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","sources":["index.css"],"sourcesContent":["* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n background: #1a1a2e;\n color: #eee;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;\n}\n\n.app {\n min-height: 100vh;\n padding: 20px;\n}\n\n.header {\n text-align: center;\n margin-bottom: 30px;\n}\n\n.header h1 {\n color: #00d8ff;\n font-size: 2.5em;\n margin-bottom: 10px;\n}\n\n.header p {\n color: #888;\n}\n\n.container {\n max-width: 1200px;\n margin: 0 auto;\n}\n\n.section {\n background: #16213e;\n border-radius: 12px;\n padding: 24px;\n margin-bottom: 24px;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);\n}\n\n.section-title {\n font-size: 1.5em;\n color: #00d8ff;\n margin-bottom: 20px;\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.section-title::before {\n content: '';\n display: inline-block;\n width: 4px;\n height: 24px;\n background: #00d8ff;\n border-radius: 2px;\n}\n\n.form-group {\n margin-bottom: 20px;\n}\n\n.form-group label {\n display: block;\n margin-bottom: 8px;\n color: #aaa;\n font-size: 0.9em;\n}\n\n.form-group input {\n width: 100%;\n padding: 12px;\n background: #0f3460;\n border: 1px solid #1a1a2e;\n border-radius: 6px;\n color: #fff;\n font-size: 1em;\n transition: border-color 0.3s;\n}\n\n.form-group input:focus {\n outline: none;\n border-color: #00d8ff;\n}\n\n.form-group textarea {\n width: 100%;\n padding: 12px;\n background: #0f3460;\n border: 1px solid #1a1a2e;\n border-radius: 6px;\n color: #fff;\n font-size: 1em;\n transition: border-color 0.3s;\n resize: vertical;\n}\n\n.form-group textarea:focus {\n outline: none;\n border-color: #00d8ff;\n}\n\n.form-group select {\n width: 100%;\n padding: 12px;\n background: #0f3460;\n border: 1px solid #1a1a2e;\n border-radius: 6px;\n color: #fff;\n font-size: 1em;\n cursor: pointer;\n}\n\n.form-group select:focus {\n outline: none;\n border-color: #00d8ff;\n}\n\n.form-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 16px;\n}\n\n.btn {\n padding: 12px 24px;\n border: none;\n border-radius: 6px;\n font-size: 1em;\n cursor: pointer;\n transition: all 0.3s;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.btn-primary {\n background: #00d8ff;\n color: #1a1a2e;\n}\n\n.btn-primary:hover {\n background: #00b8e6;\n}\n\n.btn-success {\n background: #00c853;\n color: #fff;\n}\n\n.btn-success:hover {\n background: #00a843;\n}\n\n.btn-danger {\n background: #ff5252;\n color: #fff;\n}\n\n.btn-danger:hover {\n background: #ff1744;\n}\n\n.btn-secondary {\n background: #424242;\n color: #fff;\n}\n\n.btn-secondary:hover {\n background: #616161;\n}\n\n.btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.bot-list {\n display: grid;\n gap: 16px;\n}\n\n.bot-card {\n background: #0f3460;\n border-radius: 8px;\n padding: 20px;\n display: grid;\n grid-template-columns: 1fr auto;\n gap: 16px;\n align-items: center;\n}\n\n.bot-info h3 {\n color: #fff;\n margin-bottom: 8px;\n}\n\n.bot-info p {\n color: #888;\n font-size: 0.9em;\n}\n\n.bot-status {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.status-indicator {\n width: 12px;\n height: 12px;\n border-radius: 50%;\n background: #888;\n}\n\n.status-indicator.connected {\n background: #00c853;\n box-shadow: 0 0 8px #00c853;\n}\n\n.status-indicator.disconnected {\n background: #ff5252;\n}\n\n.bot-actions {\n display: flex;\n gap: 8px;\n}\n\n.status-bar {\n background: #0f3460;\n border-radius: 8px;\n padding: 16px;\n margin-top: 20px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.status-item {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.log-console {\n background: #0a0a0a;\n border-radius: 8px;\n padding: 16px;\n margin-top: 20px;\n max-height: 300px;\n overflow-y: auto;\n font-family: 'Courier New', monospace;\n font-size: 0.85em;\n}\n\n.log-entry {\n margin-bottom: 4px;\n padding: 4px 8px;\n border-radius: 4px;\n}\n\n.log-entry.info {\n color: #00d8ff;\n}\n\n.log-entry.success {\n color: #00c853;\n}\n\n.log-entry.error {\n color: #ff5252;\n background: rgba(255, 82, 82, 0.1);\n}\n\n.log-entry.warning {\n color: #ffc107;\n}\n\n.checkbox-group {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.checkbox-group input[type=\"checkbox\"] {\n width: auto;\n}\n\n.modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n}\n\n.modal {\n background: #16213e;\n border-radius: 12px;\n padding: 32px;\n width: 90%;\n max-width: 500px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);\n}\n\n.modal h2 {\n color: #00d8ff;\n margin-bottom: 24px;\n}\n\n.modal-actions {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n margin-top: 24px;\n}\n\n.empty-state {\n text-align: center;\n padding: 40px;\n color: #888;\n}\n\n.empty-state p {\n margin-bottom: 20px;\n}\n"],"names":[],"sourceRoot":""}