From a404cbad5459788d48050e65545a0c27cf7b9e02 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Fri, 11 Sep 2026 15:49:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(branding):=20=E7=A1=AE=E5=AE=9A=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=9B=BE=E6=A0=87=EF=BC=8C=E5=B9=B6=E6=8E=A5=E5=85=A5?= =?UTF-8?q?=20Web=20/=20Electron=20/=20HarmonyOS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # 唯一源 `client/electron/src/icons/agentmail.svg` 是图标唯一源(24×24 视图框,`currentColor` 跟随文字色)。此前各端用的都是占位物:Electron 的窗口/托盘指向一个**不存在**的 `src/icons/tray-icon.png`(`nativeImage` 拿到空图,托盘不可见), HarmonyOS 的 `startIcon/foreground/background` 是 1×1 PNG, Web 端根本没有 favicon。 # 为什么带生成脚本 PNG/ICO 是二进制的,换一次配色要重出十几个尺寸,手工做必然出现 「Web 是旧的、Harmony 是新的」这种不一致,而且没人能复核。 `generate.py` 只认上面那一份源,所有变体都由它推导(本机无 rsvg/ImageMagick, 用 cairosvg + Pillow)。改图标只需改源文件再跑一次脚本。 # 各端产物 - **Web**:`public/assets/{agentmail.svg,favicon.ico,apple-touch-icon.png}` + `index.html` 引用。 放 `assets/` 下而非根目录,是因为 Gateway 只把 `/assets/*` 与 `/` 交给静态处理器 (`server/cmd/server/main.go`),放根下会 404。已实测本机与 LAN 均 200。 - **Electron**:应用图标 `icon.png`(512) / `icon.ico`(16–256) / 各尺寸 PNG / 托盘 `tray-icon.png`(32),`package.json` 里 `win.icon` 与 `linux.icon` 指过去。 托盘用品牌色字形而非白色 —— 浅色面板下白色会消失。 - **HarmonyOS**:`startIcon.png`(512) 用完整应用图标(启动页底色浅 `#FFF` / 深 `#000`,白底蓝图标两套都立得住);分层图标的 `background` 是品牌色整块、 `foreground` 是白色字形并留 12% 安全区,避免被系统圆角裁掉。 - **应用内**:新增 `BrandMarkIcon`(fill 型,与现有描边图标集不同族), 替换登录页与初始化页品牌位的占位 `MailboxIcon`;后者已无引用,一并删除。 图标色 `#2563eb` 与门户 Dashy 主题主色一致。 # 验证 - 前端 typecheck 与 196 项测试全绿;`npm run build` 产物含三个图标文件 - Gateway 重新部署后 `/assets/{agentmail.svg,favicon.ico,apple-touch-icon.png}` 在本机与 `192.168.2.60:8180` 都返回 200,Content-Type 正确 - 所有 PNG/ICO 用 Pillow 复核尺寸与 alpha 边界(合成失败会表现为全透明, 已用 getbbox 排除) --- .gitignore | 8 + client/electron/index.html | 29 +++- client/electron/package.json | 2 + client/electron/public/assets/agentmail.svg | 1 + .../public/assets/apple-touch-icon.png | Bin 0 -> 4759 bytes client/electron/public/assets/favicon.ico | Bin 0 -> 4635 bytes client/electron/src/components/LoginPage.tsx | 4 +- client/electron/src/components/SetupPage.tsx | 4 +- client/electron/src/components/icons.tsx | 18 ++- client/electron/src/icons/128x128.png | Bin 0 -> 3647 bytes client/electron/src/icons/16x16.png | Bin 0 -> 478 bytes client/electron/src/icons/256x256.png | Bin 0 -> 7025 bytes client/electron/src/icons/32x32.png | Bin 0 -> 1022 bytes client/electron/src/icons/48x48.png | Bin 0 -> 1490 bytes client/electron/src/icons/512x512.png | Bin 0 -> 14235 bytes client/electron/src/icons/64x64.png | Bin 0 -> 1913 bytes client/electron/src/icons/agentmail.svg | 1 + client/electron/src/icons/generate.py | 147 ++++++++++++++++++ client/electron/src/icons/icon.ico | Bin 0 -> 28560 bytes client/electron/src/icons/icon.png | Bin 0 -> 14235 bytes client/electron/src/icons/tray-icon.png | Bin 0 -> 1003 bytes .../resources/base/media/background.png | Bin 65 -> 5914 bytes .../resources/base/media/foreground.png | Bin 65 -> 18870 bytes .../main/resources/base/media/background.png | Bin 65 -> 5914 bytes .../main/resources/base/media/foreground.png | Bin 65 -> 18870 bytes .../main/resources/base/media/startIcon.png | Bin 65 -> 14235 bytes 26 files changed, 196 insertions(+), 18 deletions(-) create mode 100644 client/electron/public/assets/agentmail.svg create mode 100644 client/electron/public/assets/apple-touch-icon.png create mode 100644 client/electron/public/assets/favicon.ico create mode 100644 client/electron/src/icons/128x128.png create mode 100644 client/electron/src/icons/16x16.png create mode 100644 client/electron/src/icons/256x256.png create mode 100644 client/electron/src/icons/32x32.png create mode 100644 client/electron/src/icons/48x48.png create mode 100644 client/electron/src/icons/512x512.png create mode 100644 client/electron/src/icons/64x64.png create mode 100644 client/electron/src/icons/agentmail.svg create mode 100644 client/electron/src/icons/generate.py create mode 100644 client/electron/src/icons/icon.ico create mode 100644 client/electron/src/icons/icon.png create mode 100644 client/electron/src/icons/tray-icon.png diff --git a/.gitignore b/.gitignore index c16cc7d..da8c579 100644 --- a/.gitignore +++ b/.gitignore @@ -53,6 +53,14 @@ attachments/ .pi-glla/ .codegraph +# ---- Python 工具缓存 ---- +# +# client/electron/src/icons/generate.py 是图标生成脚本(cairosvg + Pillow)。 +# 静态检查器跑 ruff 时会在同目录落 .ruff_cache/,不是项目内容。 +.ruff_cache/ +__pycache__/ +*.pyc + # ---- 编辑器与系统 ---- .DS_Store *.swp diff --git a/client/electron/index.html b/client/electron/index.html index 0695bf1..6b35b7d 100644 --- a/client/electron/index.html +++ b/client/electron/index.html @@ -1,8 +1,21 @@ - + - + + + + + + AgentMail