From 0a4b98144cfc7b334dcf77118a99282174da8ef3 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Mon, 14 Sep 2026 11:07:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(webui):=20=E9=80=9A=E4=BF=A1=E4=BA=8C?= =?UTF-8?q?=E7=BA=A7=E9=A1=B5=E7=AD=BE=E4=B8=8E=E5=88=97=E8=A1=A8=E5=A4=B4?= =?UTF-8?q?=E4=B8=80=E4=BD=93=20+=20=E6=B2=89=E6=B5=B8=E5=BC=8F=EF=BC=88PW?= =?UTF-8?q?A=20=E5=85=A8=E5=B1=8F=EF=BC=89+=20=E6=97=A5=E5=8E=86=E6=BB=91?= =?UTF-8?q?=E5=8A=A8=E9=AA=8C=E6=94=B6=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户三条(同一线索):「通信页面的二级页面与其他位置极其割裂」、 「不支持沉浸式网页」、「日历页面还不支持左右滑动手势」。 ## ① 二级页签不再割裂 页签原先是**带 shadow 的白色胶囊**浮在面板上,看起来像硬贴上去的另一套控件。 改成**下划线页签**:与列表头同一内边距、同一条下边框,选中态用蓝色下划线 + `-mb-px` 压住分隔线(否则会出现"两条线"的接缝)。 ## ② 沉浸式 根因不是 viewport(`viewport-fit=cover` 早就有了,安全区也接了 `env(safe-area-inset-*)`),而是**没有 Web App Manifest**:手机上"添加到主屏幕"后 打开仍然是带地址栏的网页。现在加了 `manifest.webmanifest`(`display: standalone`) + iOS 的 `apple-mobile-web-app-capable` / `black-translucent`(状态栏内容叠在页面上)。 manifest 放在**根路径**而不是 /assets/ 下:它里面的 `start_url`/`scope` 是相对 manifest 自己的 URL 解析的,挂在 /assets/ 下就得写 "../"。静态只挂了 `/` 与 `/assets/*`, 所以显式加了一条路由(并从 embed 读,而不是读磁盘 —— 前端产物必须与应用同源同版本)。 图标由项目唯一图标源生成 192/512(尺寸与声明一致,我用 struct 读文件头核对过)。 **实测**:`/manifest.webmanifest` → HTTP 200 `application/manifest+json`。 ## ③ 日历滑动:补上真正的验收脚本 `test/manual/calendar-swipe-verify.mjs` 四条,含**反向对照**(纵向拖动不得翻页) 与前置断言。写它时又踩了一次自己的坑:标题真实格式是「2026 年 9 月」(数字与"年月" 之间有空格),我第一版正则按无空格写 ⇒ 匹配不到 ⇒ 三个值全是 null, **看起来像"滑动没生效",其实是探针瞎了**。所以脚本里第一条就是"标题读得到"。 实测:9 月 →左滑→ 10 月 →右滑→ 9 月,纵向拖动不动。 ## 顺带 把我为验收造的测试数据**归档**(不是删除):10 个 `/tmp/scrollprobe-*` 独立会话 + 12 封"滚动验收/窄屏验收样例"邮件。 --- client/electron/index.html | 13 +++ client/electron/public/assets/icon-192.png | Bin 0 -> 7991 bytes client/electron/public/assets/icon-512.png | Bin 0 -> 15160 bytes client/electron/public/manifest.webmanifest | 40 ++++++++ client/electron/src/components/CommTabs.tsx | 13 ++- .../test/manual/calendar-swipe-verify.mjs | 91 ++++++++++++++++++ server/cmd/server/main.go | 16 +++ server/internal/static/static.go | 8 ++ 8 files changed, 177 insertions(+), 4 deletions(-) create mode 100644 client/electron/public/assets/icon-192.png create mode 100644 client/electron/public/assets/icon-512.png create mode 100644 client/electron/public/manifest.webmanifest create mode 100644 client/electron/test/manual/calendar-swipe-verify.mjs diff --git a/client/electron/index.html b/client/electron/index.html index 56eaefd..1973b2c 100644 --- a/client/electron/index.html +++ b/client/electron/index.html @@ -13,6 +13,19 @@ + + + + + + AgentMail