From a01d326f404c6e8a5efdd55b8f4bee52b5b59116 Mon Sep 17 00:00:00 2001 From: ylytdeng Date: Sun, 17 May 2026 18:22:13 +0800 Subject: [PATCH] =?UTF-8?q?style(monitor=5Fweb):=20=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E5=8C=BA=20emoji=20=E5=85=A8=E9=83=A8=E6=8D=A2=E6=88=90=20Luci?= =?UTF-8?q?de=20=E9=A3=8E=E6=A0=BC=20SVG=20icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 痛点 用户: "最讨厌的就是 emoji" 工具区原来用了 10 处 emoji 作 icon: 🛠️ ⚙️ 📱 🏢 🔧 ⚠️ 💡 📡 🛑 ⏳。 emoji 的问题: - 跨平台渲染不一致 (Apple/Win/Linux 字体不同, 大小色调全飘) - 暗色主题里花花绿绿的"装饰感"破坏现代极简风 - 字号控制不了, 跟周围文字基线不对齐 ## 实现 ### SVG symbol library 内嵌 - body 开头加 内嵌 10 个 - 全部 Lucide 风格: viewBox 24x24, stroke="currentColor" stroke-width=2, 线条 round cap/join - 使用 引用 - currentColor 自动跟文字色 ### 通用 .i CSS .i 16x16 (默认, 标签/按钮) .i-sm 13x13 (chip 内) .i-lg 20x20 .i-xl 32x32 (空状态) .spin 配 @keyframes spin 1s linear infinite, 给 loader 用 ### 替换清单 | 位置 | 之前 | 现在 | |---|---|---| | header 工具按钮 | 🛠️ 工具 | #i-wrench + 工具 | | header 设置按钮 | ⚙️ | #i-settings | | tab 个人微信 | 📱 个人微信 | #i-chat + 个人微信 | | tab 企业微信 | 🏢 企业微信 | #i-briefcase + 企业微信 | | tab 工具 | 🔧 工具 | #i-sliders + 工具 | | 前置警告 (微信/企微 tab) | ⚠️ 前置 | #i-alert + 前置 | | 前置信息 (工具 tab) | 💡 跟微信... | .info 主题 + #i-info + 文字 | | 空状态 | 📡 等待新消息 | #i-radio (i-xl, opacity .4) | | 终止按钮 (运行中) | 🛑 终止 | #i-stop (实心方块) + 终止 | | 运行中状态 | ⏳ 运行中 | #i-loader + .spin 旋转 | (消息流里的 msg type emoji 风险大, 本次不动, follow-up) ### 副带改动 - .tool-prereq 加 .info 变体 (绿蓝色, 区别 warn 黄) - .tool-prereq::before ● 去掉 (跟 SVG icon 重复) - 按钮 cancel 状态用 innerHTML 保留 SVG (之前 textContent 会丢) ## 实测 headless chrome 截图 (179KB), 全部 emoji 消失, 线性 icon 协调一致, 暗色主题没花花绿绿装饰感。 测试 185/185 通过。 剩余 emoji (本次不动): - mcp_server/monitor_web msg type icon (560-561 line): 📞 ⚙️ ↩️ 📨 等, 这是消息渲染逻辑, 单独 PR follow-up - Notification API 的 icon 字段 (2176, 2178): 浏览器通知配图, emoji 实际不显示需要 url, 无影响 --- monitor_web.py | 52 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/monitor_web.py b/monitor_web.py index 11731cb..3d8eb2c 100644 --- a/monitor_web.py +++ b/monitor_web.py @@ -1782,6 +1782,13 @@ a.msg-link{text-decoration:none;color:inherit} .add-rule-btn:hover{background:rgba(79,195,247,.2)} /* 通知高亮 */ .msg.notify-hl{border-left:3px solid #ffd54f;background:rgba(255,213,79,.08);box-shadow:0 0 12px rgba(255,213,79,.1)} +/* Icon 通用样式 (替代 emoji) */ +.i{width:16px;height:16px;display:inline-block;vertical-align:-3px;flex-shrink:0;color:inherit} +.i-sm{width:13px;height:13px;vertical-align:-2px} +.i-lg{width:20px;height:20px;vertical-align:-5px} +.i-xl{width:32px;height:32px;vertical-align:middle} +.spin{animation:spin 1s linear infinite;transform-origin:center} +@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}} /* 工具面板 (Web 版替代 tkinter app_gui.py) */ .tools-btn{background:none;border:1px solid var(--border-strong);color:var(--text-dim);font-size:var(--t3);cursor:pointer;padding:6px 12px;border-radius:var(--r1);transition:all .2s;margin-left:var(--s2);flex-shrink:0;font-weight:500} .tools-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-bg)} @@ -1798,8 +1805,8 @@ a.msg-link{text-decoration:none;color:inherit} .tool-pane.active{display:block;animation:fadeIn .2s ease-out} @keyframes fadeIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}} /* 前置条件 → 紧凑 chip (不再像 form error) */ -.tool-prereq{display:inline-flex;align-items:center;gap:var(--s1);background:rgba(255,213,79,.08);color:var(--warn);font-size:var(--t1);padding:6px 12px;border-radius:var(--r-pill);border:none;margin-bottom:var(--s4);font-weight:500;letter-spacing:.2px} -.tool-prereq::before{content:'●';color:var(--warn);font-size:8px} +.tool-prereq{display:inline-flex;align-items:center;gap:var(--s2);background:rgba(255,213,79,.08);color:var(--warn);font-size:var(--t1);padding:6px 12px;border-radius:var(--r-pill);border:none;margin-bottom:var(--s4);font-weight:500;letter-spacing:.2px} +.tool-prereq.info{background:rgba(79,195,247,.08);color:var(--accent)} .tool-step{margin-bottom:var(--s4)} .tool-step-label{font-size:var(--t1);color:var(--text-faint);margin-bottom:var(--s2);text-transform:uppercase;letter-spacing:1.2px;font-weight:600} .tools-row{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center} @@ -1856,23 +1863,37 @@ a.msg-link{text-decoration:none;color:inherit} + +

WeChat Monitor

SSE 实时
0 消息
- - + +
- - - + + +
-
⚠️ 前置:微信 PC 版正在运行且已登录
+
前置:微信 PC 版正在运行且已登录
Step 1 — 解密
@@ -1892,7 +1913,7 @@ a.msg-link{text-decoration:none;color:inherit}
-
⚠️ 前置:企业微信 PC 版正在运行且已登录(独立于个人微信)
+
前置:企业微信 PC 版正在运行且已登录(独立于个人微信)
Step 1 — 解密
@@ -1909,7 +1930,7 @@ a.msg-link{text-decoration:none;color:inherit}
-
💡 跟微信/企微进程无关,只读已解密产物
+
跟微信/企微进程无关,只读已解密产物
语音 / 转码
@@ -1937,7 +1958,7 @@ a.msg-link{text-decoration:none;color:inherit}
-
📡

等待新消息...

WAL增量解密 · SSE推送

+

等待新消息...

WAL增量解密 · SSE推送