From 0dcab6f36931576431fee9c4754a650b5c393479 Mon Sep 17 00:00:00 2001 From: LoveChengke Date: Sat, 12 Sep 2026 15:19:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(client):=20=E7=81=B5=E5=8A=A8=E5=B2=9B?= =?UTF-8?q?=E4=B8=AA=E6=80=A7=E5=8C=96=E8=AE=BE=E7=BD=AE=EF=BC=88=E9=9C=80?= =?UTF-8?q?=E6=B1=82=202=EF=BC=89=E3=80=81=E5=BD=A2=E5=8F=98=E6=8A=96?= =?UTF-8?q?=E5=8A=A8=E4=BF=AE=E5=A4=8D=EF=BC=88=E9=9C=80=E6=B1=82=204?= =?UTF-8?q?=EF=BC=89=E3=80=81=E5=85=B3=E9=97=AD=E5=88=B0=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E6=89=98=E7=9B=98=E4=B8=8E=E9=80=80=E5=87=BA=E6=B8=85=E7=90=86?= =?UTF-8?q?=EF=BC=88=E9=9C=80=E6=B1=82=205=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 需求 2:设置页个性化(实时生效 + 持久化) - 新增 `IslandAppearance`(shared 类型)+ `DEFAULT_ISLAND_APPEARANCE` / `ISLAND_APPEARANCE_RANGES` / `ISLAND_POSITIONS`:高度 36–72、宽度 220–420、圆角 8–32、不透明度 0.4–1、字号 11–18、 动画速度 0.5–2、主题色、显示位置(顶部居中/左上/右上/底部居中)、动画开关、始终置顶。 - 客户端 `config.json` 增加 `island` 字段(`normalizeIslandAppearance` 夹紧越界值; 旧配置无该字段时自动补默认值,向后兼容);`SettingsView` 新增「灵动岛 · 个性化」面板: 滑块/取色器/开关/位置选择 + 「保存设置 / 预览效果 / 恢复默认」,拖动即实时预览。 - 主进程 `island.setAppearance()`:窗口尺寸按外观联动(展开卡按差值同步放大,内容用 flex + 溢出滚动承载)、 透明度、置顶、动画开关与速度、停靠位置实时生效,并把外观通过 `island:appearance` 下发给灵动岛渲染进程; 渲染进程用 CSS 变量(`--island-w/-h/-radius/-font/-accent`)驱动卡片尺寸、圆角、字号与强调色。 ## 需求 4:形变抖动修复 - 窗口尺寸动画改为**单条帧循环**(优先 `requestAnimationFrame`,主进程无该全局时退化为 ~60fps 定时器); 新动画取消上一条并作废令牌;结束对齐最终尺寸(消除 1px 累积误差);**展开动画结束后才取焦点**。 - 卡片保持固定尺寸 + 顶部居中锚定(此前已修),只让窗口露出/裁切,形变时内容不参与重排。 - 冒烟新增断言:收回过程窗口宽度**单调收缩**(实测 362→330→305→288→274→270→268…)、 卡片上边缘波动 **0px**、卡片布局宽度只取 `396/260` 两个固定值;连续 5 次快速开合后状态与尺寸稳定。 ## 需求 5:关闭到系统托盘 + 退出清理 - 新增 `main/tray.ts`:托盘图标(`public/tray.png`,`pnpm icons` 会自动同步)、右键菜单 「显示主窗口 / 隐藏到托盘 / 退出班级小助手」、左键单击/双击恢复窗口。 - `main/index.ts`:`close` → `preventDefault + hide`(关闭窗口不退出,后台继续接收通知,日志留痕); `window-all-closed` 不再退出;`quitApp()` 与 `before-quit`/`will-quit` 统一走 `shutdownResources()`:销毁托盘 → 销毁灵动岛(帧循环/定时器)→ 销毁全部窗口 (渲染进程随之释放 Socket.IO 连接与 IndexedDB 句柄)→ `app.quit()` + `app.exit(0)` 兜底。 - 冒烟新增断言:关闭后 `visible=false / destroyed=false / 进程存活=true`;清理后 `托盘=false / 灵动岛=false`。 ## 验证 - `pnpm verify:desktop` **40/40** ✅(新增 6 项:个性化外观生效、调整尺寸后内容不溢出、收回不抖动、 快速开合稳定、关闭到托盘、退出前资源清理) - `pnpm verify:e2e` **82/82** ✅、`pnpm verify:web` **17/17** ✅(回归无破坏) - `pnpm lint` / `format:check` / `typecheck` 全绿 - 顺带修复:托盘/关闭处理器此前挂在冒烟验证之后,导致冒烟模式关闭窗口会真的销毁窗口 (现已调整为在冒烟前挂载);`smoke.mjs` 配置目录按进程号隔离,避免上次异常退出的目录占用导致启动失败。 --- README.md | 40 ++- packages/desktop-client/public/tray.png | Bin 0 -> 270653 bytes .../desktop-client/src/island/IslandApp.vue | 66 +++-- packages/desktop-client/src/main/config.ts | 36 ++- packages/desktop-client/src/main/index.ts | 79 +++++- packages/desktop-client/src/main/island.ts | 228 ++++++++++++++++-- packages/desktop-client/src/main/smoke.ts | 169 ++++++++++++- packages/desktop-client/src/main/tray.ts | 76 ++++++ packages/desktop-client/src/preload/index.ts | 4 + packages/desktop-client/src/preload/island.ts | 11 +- .../src/renderer/views/SettingsView.vue | 181 +++++++++++++- .../desktop-client/src/types/desktop.d.ts | 11 +- packages/shared/src/constants.ts | 35 ++- packages/shared/src/types.ts | 27 +++ scripts/generate-icons.mjs | 16 +- 15 files changed, 923 insertions(+), 56 deletions(-) create mode 100644 packages/desktop-client/public/tray.png create mode 100644 packages/desktop-client/src/main/tray.ts diff --git a/README.md b/README.md index 104bda2..f300a02 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ | 1 | pnpm monorepo 脚手架、TypeScript / ESLint / Prettier / 环境变量 | ✅ 已完成 | | 2 | 后端:Prisma schema + 迁移 + 种子数据 + JWT 认证 + RBAC + 模块化 REST API + Socket.IO | ✅ 已完成 | | 3 | Web 管理端:登录、主布局、仪表盘、班级/学生/课表/作业/通知/成绩页面、Axios 封装、实时提示 | ✅ 已完成 | -| 4 | EXE 客户端:Electron 主进程/preload/渲染进程、登录、课表/作业/通知/成绩/设置、实时推送、IndexedDB 离线缓存 | ✅ 已完成(冒烟验证 34/34) | +| 4 | EXE 客户端:Electron 主进程/preload/渲染进程、登录、课表/作业/通知/成绩/设置、实时推送、IndexedDB 离线缓存 | ✅ 已完成(冒烟验证 40/40) | | 5 | 三端联调脚本、打包命令、完整 README | ✅ 已完成(三套安装包 + 两套 UI 回归测试) | | 6 | 测试账号与种子数据说明 | ✅ 已完成(见下文) | | 7 | 生产化:服务端安装程序(内置 Node)、Web 端 PWA 可安装、Docker + Nginx 部署、生产加固与运维文档 | ✅ 已完成(见 [`docs/production.md`](docs/production.md)) | @@ -173,7 +173,7 @@ pnpm verify:desktop # 另开一个终端先启动后端:pnpm dev:server pnpm verify:e2e # 后端 + REST + Socket.IO + RBAC + 上课时段拦截 + 叫人:82 项 pnpm verify:web # Web 管理端真实点击(含权限入口隐藏、手机适配、叫人入口、紧急通知):17 项 -pnpm verify:desktop # Electron 客户端(含灵动岛动画/收回/已读/作业/叫人、真实链路、课表时间轴):34 项 +pnpm verify:desktop # Electron 客户端(含灵动岛动画/收回/已读/作业/叫人、真实链路、课表时间轴、个性化与托盘):40 项 ``` 后端脚本验证**实时推送时延、作业完成、成绩下发、权限隔离、上课时段紧急通知拦截**等 62 项, @@ -383,6 +383,40 @@ pnpm verify:desktop # Electron 客户端(含灵动岛动画/收回/已读 > 后续可继续深化:迷你悬浮课表窗口(ClassIsland 的桌面课表条)、上课/下课提醒动画与铃声。 +### 个性化设置与系统托盘 + +**设置 → 灵动岛 · 个性化**(改动即实时生效,保存后写入本地配置,重启仍生效): + +| 设置项 | 区间/取值 | 说明 | +| ---------- | --------------------------------- | ------------------------------------------------------------------------------ | +| 灵动岛高度 | 36–72px | 胶囊高度;展开卡按同差值联动(`+264/+292/+308px`),内容用 flex + 溢出滚动承载 | +| 灵动岛宽度 | 220–420px | 同上,展开卡按差值联动 | +| 圆角 | 8–32px | 卡片圆角 | +| 不透明度 | 40%–100% | 窗口整体不透明度 | +| 字号 | 11–18px | 卡片基础字号 | +| 动画速度 | 0.5×–2× | 形变/淡入时长倍率 | +| 主题色 | 取色器 | 用于高亮、按钮、进度条(CSS 变量下发到灵动岛渲染进程) | +| 显示位置 | 顶部居中 / 左上 / 右上 / 底部居中 | 按住 `workArea` 计算,多屏跟随主屏 | +| 动画开关 | 开/关 | 关闭后展开/收起瞬时生效(不再逐帧插值) | +| 始终置顶 | 开/关 | 对应 `setAlwaysOnTop` | + +- 越界值在**主进程**统一夹紧(`normalizeIslandAppearance`),用户填坏配置也不会让布局错乱。 +- 「预览效果」按钮会本地推一条通知,立刻看到当前尺寸/配色/动画。 +- 落盘位置:客户端 `config.json` 的 `island` 字段(旧配置没有该字段时自动补默认值,向后兼容)。 + +**形变动画(需求 4 抖动修复)**:窗口尺寸改为**单条帧循环**驱动(优先 `requestAnimationFrame`, +主进程没有该全局时退化为 ~60fps 定时器),新动画会取消上一条并作废令牌,结束时对齐最终尺寸; +卡片始终是**固定尺寸 + 顶部居中锚定**,只让窗口露出/裁切,形变过程中卡片上边缘不动; +展开动画结束后才取焦点。冒烟实测:收回过程窗口宽度序列 `362→330→305→288→274→270→268…` +单调收缩、卡片上边缘波动 **0px**、卡片宽度只取 `396/260` 两个固定值,连续 5 次快速开合后状态与尺寸稳定。 + +**系统托盘(需求 5)**:关闭主窗口不退出程序,而是隐藏到托盘后台继续接收通知; +托盘图标(左键单击/双击)恢复主窗口,右键菜单提供「显示主窗口 / 隐藏到托盘 / 退出班级小助手」。 +退出时统一清理:销毁托盘 → 销毁灵动岛(含帧循环与定时器)→ 销毁全部窗口 +(渲染进程随之结束,其中的 Socket.IO 连接、IndexedDB 句柄一并释放),并用 `app.exit(0)` 兜底, +任务管理器中不留残留进程。冒烟实测:关闭后 `visible=false / destroyed=false / 进程存活=true`, +清理后 `托盘=false / 灵动岛=false`。 + ### 离线缓存与自动同步 ``` @@ -680,7 +714,7 @@ pnpm db:migrate && pnpm db:seed | --------------------------------------------------------------------------------- | ----------------------------------- | | `pnpm verify:e2e`(开发环境与**安装后的生产实例**各跑一次) | **82/82** ✅ | | `pnpm verify:web`(Web 管理端真实点击 + 权限入口隐藏 + 手机适配 + 叫人 + PWA) | **17/17** ✅ | -| `pnpm verify:desktop`(客户端冒烟 + 灵动岛动画/收回/已读/作业/叫人 + 课表时间轴) | **34/34** ✅ | +| `pnpm verify:desktop`(客户端冒烟 + 灵动岛动画/收回/已读/作业/叫人 + 课表时间轴) | **40/40** ✅ | | `pnpm typecheck` / `pnpm lint` / `pnpm format:check` | 全部通过 ✅ | | 安装程序完整生命周期(静默安装 → 启停脚本 → 卸载) | 通过 ✅ | | Docker / Nginx 部署样例 | 文件已提供,本机无 Docker 未实测 ⚠️ | diff --git a/packages/desktop-client/public/tray.png b/packages/desktop-client/public/tray.png new file mode 100644 index 0000000000000000000000000000000000000000..3e256e55e1d24b62c3ddb00b6bc20265491cb4b2 GIT binary patch literal 270653 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 z%0D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%0D1YeKx) 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
Za#bW;OY!TWs%k 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 literal 0 HcmV?d00001 diff --git a/packages/desktop-client/src/island/IslandApp.vue b/packages/desktop-client/src/island/IslandApp.vue index fedd665..31b750b 100644 --- a/packages/desktop-client/src/island/IslandApp.vue +++ b/packages/desktop-client/src/island/IslandApp.vue @@ -1,6 +1,8 @@ - @@ -260,6 +281,13 @@ body, background: transparent; overflow: hidden; font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Arial, sans-serif; + /* 个性化外观默认值(主进程会通过 island:appearance 覆盖这些变量) */ + --island-accent: #6cc4ff; + --island-radius: 20px; + --island-font: 13px; + --island-w: 268px; + --island-h: 44px; + font-size: var(--island-font); -webkit-user-select: none; user-select: none; } @@ -298,30 +326,30 @@ body, /* 各形态固定尺寸(与主进程 ISLAND_SIZES 对齐:卡片刻意比窗口小 4~8px,四周留 2~4px 透明边) */ .island-card.pill { - left: calc(50% - 130px); - width: 260px; - height: 38px; - border-radius: 20px; + left: calc(50% - var(--island-w) / 2 + 4px); + width: calc(var(--island-w) - 8px); + height: calc(var(--island-h) - 6px); + border-radius: var(--island-radius); } .island-card.expanded { - left: calc(50% - 198px); - width: 396px; - height: 308px; - border-radius: 24px; + left: calc(50% - (var(--island-w) + 136px) / 2 + 4px); + width: calc(var(--island-w) + 128px); + height: calc(var(--island-h) + 264px); + border-radius: var(--island-radius); } .island-card.expanded.urgent { - left: calc(50% - 208px); - width: 416px; - height: 336px; + left: calc(50% - (var(--island-w) + 156px) / 2 + 4px); + width: calc(var(--island-w) + 148px); + height: calc(var(--island-h) + 292px); } /* 叫人:卡片略大(对应主进程 CALL_SIZE 440x360) */ .island-card.expanded.call { - left: calc(50% - 216px); - width: 432px; - height: 352px; + left: calc(50% - (var(--island-w) + 172px) / 2 + 4px); + width: calc(var(--island-w) + 164px); + height: calc(var(--island-h) + 308px); } /* 隐藏态占位:只保留结构,不占视觉空间 */ @@ -457,8 +485,8 @@ body, width: 26px; height: 26px; border-radius: 50%; - color: #9fd0ff; - background: rgba(79, 172, 254, 0.14); + color: var(--island-accent); + background: color-mix(in srgb, var(--island-accent) 16%, transparent); flex: 0 0 auto; } @@ -664,7 +692,7 @@ body, .more { font-size: 11px; - color: #9fd0ff; + color: var(--island-accent); } .more.muted { @@ -702,7 +730,7 @@ body, .solid-btn { color: #06263f; - background: #6cc4ff; + background: var(--island-accent); font-weight: 650; } diff --git a/packages/desktop-client/src/main/config.ts b/packages/desktop-client/src/main/config.ts index 38ec6a8..4b65c6b 100644 --- a/packages/desktop-client/src/main/config.ts +++ b/packages/desktop-client/src/main/config.ts @@ -1,7 +1,7 @@ import fs from 'node:fs'; import path from 'node:path'; import { app, safeStorage } from 'electron'; -import { DEFAULT_SERVER_URL } from '@classhelper/shared'; +import { DEFAULT_ISLAND_APPEARANCE, DEFAULT_SERVER_URL, type IslandAppearance } from '@classhelper/shared'; import type { DesktopStoredConfig } from '../types/desktop.js'; interface PersistedConfig { @@ -10,6 +10,8 @@ interface PersistedConfig { /** 加密后的 token(base64)或明文(当系统不支持加密时) */ token: string | null; tokenEncrypted: boolean; + /** 个性化设置:灵动岛外观(向后兼容:旧配置文件没有该字段时用默认值补齐) */ + island?: Partial; } const DEFAULT_CONFIG: PersistedConfig = { @@ -17,8 +19,35 @@ const DEFAULT_CONFIG: PersistedConfig = { username: '', token: null, tokenEncrypted: false, + island: { ...DEFAULT_ISLAND_APPEARANCE }, }; +/** 外观字段的合法区间校验(越界值直接夹紧,避免用户配置破坏灵动岛布局) */ +function normalizeIslandAppearance(input?: Partial): IslandAppearance { + const clamp = (value: unknown, min: number, max: number, fallback: number): number => { + const numeric = typeof value === 'number' && Number.isFinite(value) ? value : fallback; + return Math.min(max, Math.max(min, Math.round(numeric * 100) / 100)); + }; + const positions: IslandAppearance['position'][] = ['top-center', 'top-left', 'top-right', 'bottom-center']; + return { + height: clamp(input?.height, 36, 72, DEFAULT_ISLAND_APPEARANCE.height), + width: clamp(input?.width, 220, 420, DEFAULT_ISLAND_APPEARANCE.width), + radius: clamp(input?.radius, 8, 32, DEFAULT_ISLAND_APPEARANCE.radius), + opacity: clamp(input?.opacity, 0.4, 1, DEFAULT_ISLAND_APPEARANCE.opacity), + accent: + typeof input?.accent === 'string' && /^#[0-9a-fA-F]{6}$/.test(input.accent) + ? input.accent + : DEFAULT_ISLAND_APPEARANCE.accent, + fontSize: clamp(input?.fontSize, 11, 18, DEFAULT_ISLAND_APPEARANCE.fontSize), + animations: input?.animations !== false, + speed: clamp(input?.speed, 0.5, 2, DEFAULT_ISLAND_APPEARANCE.speed), + position: positions.includes(input?.position as IslandAppearance['position']) + ? (input?.position as IslandAppearance['position']) + : DEFAULT_ISLAND_APPEARANCE.position, + alwaysOnTop: input?.alwaysOnTop !== false, + }; +} + function configFilePath(): string { return path.join(app.getPath('userData'), 'config.json'); } @@ -57,6 +86,7 @@ function readPersisted(): PersistedConfig { username: typeof parsed.username === 'string' ? parsed.username : '', token: typeof parsed.token === 'string' ? parsed.token : null, tokenEncrypted: parsed.tokenEncrypted === true, + island: normalizeIslandAppearance(parsed.island), }; } catch { return { ...DEFAULT_CONFIG }; @@ -76,6 +106,7 @@ export function getConfig(): DesktopStoredConfig { serverUrl: persisted.serverUrl, username: persisted.username, token: decryptToken(persisted), + island: normalizeIslandAppearance(persisted.island), }; } @@ -89,6 +120,9 @@ export function saveConfig(patch: Partial): DesktopStoredCo if (typeof patch.username === 'string') { persisted.username = patch.username; } + if (patch.island !== undefined) { + persisted.island = normalizeIslandAppearance({ ...persisted.island, ...patch.island }); + } if (patch.token !== undefined) { const encrypted = encryptToken(patch.token); persisted.token = encrypted.token; diff --git a/packages/desktop-client/src/main/index.ts b/packages/desktop-client/src/main/index.ts index 9ff521a..70183dc 100644 --- a/packages/desktop-client/src/main/index.ts +++ b/packages/desktop-client/src/main/index.ts @@ -4,6 +4,7 @@ import { registerIpcHandlers } from './ipc.js'; import { island, registerIslandIpc } from './island.js'; import { logger } from './logger.js'; import { runSmokeTest } from './smoke.js'; +import { createTray, destroyTray, isTrayReady } from './tray.js'; // 主进程由 esbuild 打包为 CommonJS,因此这里可以直接使用 __dirname // (dist/main/index.js -> dist/preload/index.js 与 dist/renderer/index.html) @@ -19,6 +20,9 @@ if (smokeProfile) app.setPath('userData', smokeProfile); let mainWindow: BrowserWindow | null = null; +/** 是否正在退出:用于区分「关闭窗口 = 隐藏到托盘」与「真正退出」 */ +let isQuitting = false; + function createWindow(): BrowserWindow { const win = new BrowserWindow({ width: 1200, @@ -106,6 +110,25 @@ if (!gotLock) { logger.error('灵动岛初始化失败(不影响主功能)', error); } + // 关闭主窗口 → 隐藏到系统托盘(需求 5),只有托盘"退出"才真正结束进程 + // 注意:必须在冒烟验证之前挂载,否则 close() 会真的销毁窗口 + mainWindow?.on('close', (event) => { + if (isQuitting) return; + event.preventDefault(); + mainWindow?.hide(); + logger.info('主窗口已隐藏到系统托盘(后台继续运行,左键托盘图标可恢复)'); + }); + + try { + createTray({ + onShow: () => showMainWindow(), + onHide: () => mainWindow?.hide(), + onQuit: () => quitApp(), + }); + } catch (error) { + logger.warn(`系统托盘初始化失败(不影响主功能):${error instanceof Error ? error.message : error}`); + } + if (isSmokeTest) { try { await runSmokeTest(mainWindow); @@ -116,13 +139,63 @@ if (!gotLock) { } }); + /** 显示主窗口(托盘左键 / 托盘菜单 / 二次启动) */ + function showMainWindow(): void { + if (!mainWindow || mainWindow.isDestroyed()) { + mainWindow = createWindow(); + void loadRenderer(mainWindow); + } + if (mainWindow.isMinimized()) mainWindow.restore(); + mainWindow.show(); + mainWindow.focus(); + } + + /** + * 退出前的统一资源清理(需求 5:托盘 / 定时器 / 网络连接 / 窗口都不留残留)。 + * 幂等:托盘退出、before-quit、will-quit 都可能触发。 + */ + function shutdownResources(): string { + const done: string[] = []; + if (isTrayReady()) { + destroyTray(); + done.push('托盘已销毁'); + } + if (island.isReady()) { + island.destroy(); + done.push('灵动岛已销毁'); + } + for (const win of BrowserWindow.getAllWindows()) { + if (!win.isDestroyed()) { + // 渲染进程随之结束:其中的 Socket.IO 连接、定时器、IndexedDB 句柄一并释放 + win.destroy(); + done.push('窗口已销毁'); + } + } + return done.length > 0 ? done.join('、') : '无需要清理的资源'; + } + + /** 真正退出:先清理资源,再 app.quit,并用 app.exit 兜底(确保不留进程) */ + function quitApp(): void { + if (isQuitting) return; + isQuitting = true; + logger.info(`正在退出:${shutdownResources()}`); + app.quit(); + setTimeout(() => app.exit(0), 1500); + } + app.on('window-all-closed', () => { - island.destroy(); - if (process.platform !== 'darwin') app.quit(); + // 有托盘常驻:窗口全关也不退出,继续后台接收通知 + logger.info('所有窗口已关闭,程序继续在系统托盘后台运行'); }); app.on('before-quit', () => { - island.destroy(); + isQuitting = true; + shutdownResources(); + }); + + app.on('will-quit', () => { + const summary = shutdownResources(); + logger.info(`应用退出清理:${summary}`); }); app.on('activate', async () => { diff --git a/packages/desktop-client/src/main/island.ts b/packages/desktop-client/src/main/island.ts index c261486..7940f34 100644 --- a/packages/desktop-client/src/main/island.ts +++ b/packages/desktop-client/src/main/island.ts @@ -1,7 +1,14 @@ import path from 'node:path'; import { BrowserWindow, ipcMain, screen } from 'electron'; -import type { IslandMode, IslandNotification, IslandState } from '@classhelper/shared'; +import { + DEFAULT_ISLAND_APPEARANCE, + type IslandAppearance, + type IslandMode, + type IslandNotification, + type IslandState, +} from '@classhelper/shared'; import { logger } from './logger.js'; +import { getConfig } from './config.js'; /** * 灵动岛(Dynamic Island)主进程控制器。 @@ -14,18 +21,52 @@ import { logger } from './logger.js'; * - 上课时间段:非紧急通知不弹出(自动隐藏),进入待发队列 * - 下课后:自动在桌面中上方弹出队列中的通知详情 * - 紧急通知:无论是否在上课,立刻展开显示详情,无需点击 + * + * 动画实现要点(需求 4:展开/收起不能抖动): + * - 窗口尺寸用**单一 requestAnimationFrame 循环**插值,不再用 setTimeout 链(避免掉帧与回跳) + * - 锚点固定:横向按停靠位置计算、纵向固定,形变过程中卡片上边缘不动 + * - 卡片本身是固定尺寸(渲染进程),只让窗口露出/裁切,内容不参与布局重排 + * - 展开完成之后才取焦点(避免取焦瞬间抢走动画帧) + * - 关闭动画时直接落到目标尺寸 */ -const SIZES: Record = { - hidden: { width: 268, height: 44 }, +/** 基础尺寸:真实尺寸 = 外观设置联动计算(见 sizes()) */ +const BASE = { pill: { width: 268, height: 44 }, expanded: { width: 404, height: 316 }, + urgent: { width: 424, height: 344 }, + /** "叫人"消息卡片(比普通详情略大,突出"请 XXX 同学找 XXX 老师") */ + call: { width: 440, height: 360 }, }; -const URGENT_SIZE = { width: 424, height: 344 }; +/** + * 帧调度:优先 requestAnimationFrame(有则最平滑),主进程没有该全局时退化为 ~60fps 定时器。 + * 关键点不是用哪个 API,而是**始终只有一条动画循环**:每次新动画都会取消上一条并作废令牌, + * 结束时再对齐一次最终尺寸,避免累积误差导致边缘"抖一下"。 + */ +type FrameHandle = number; +declare const requestAnimationFrame: ((callback: (time: number) => void) => number) | undefined; +declare const cancelAnimationFrame: ((handle: number) => void) | undefined; -/** "叫人"消息卡片(比普通详情略大,突出"请 XXX 同学找 XXX 老师") */ -const CALL_SIZE = { width: 440, height: 360 }; +function scheduleFrame(callback: () => void): FrameHandle { + if (typeof requestAnimationFrame === 'function') return requestAnimationFrame(() => callback()); + return setTimeout(callback, 16) as unknown as FrameHandle; +} + +function cancelFrame(handle: FrameHandle): void { + if (typeof cancelAnimationFrame === 'function') cancelAnimationFrame(handle); + else clearTimeout(handle as unknown as ReturnType); +} + +const DEFAULT_SIZES: Record = { + hidden: BASE.pill, + pill: BASE.pill, + expanded: BASE.expanded, +}; + +let SIZES: Record = { ...DEFAULT_SIZES }; +let URGENT_SIZE = { ...BASE.urgent }; +let CALL_SIZE = { ...BASE.call }; /** 各状态的自动收起/隐藏时长(毫秒),0 表示不自动收起 */ const TIMEOUTS = { @@ -67,6 +108,10 @@ class IslandController { private boundsToken = 0; /** 透明度(淡入淡出)动画令牌,与尺寸动画分开,否则淡入会立刻取消形变 */ private fadeToken = 0; + /** 尺寸动画的 requestAnimationFrame 句柄(需求 4:单循环,避免抖动) */ + private boundsFrame: number | null = null; + /** 外观设置(设置页可调,主进程持久化) */ + private appearance: IslandAppearance = { ...DEFAULT_ISLAND_APPEARANCE }; private state: IslandState = { mode: 'hidden', @@ -94,6 +139,13 @@ class IslandController { async init(rendererUrl: string | null): Promise { this.rendererUrl = rendererUrl; + // 恢复用户保存的个性化外观(尺寸/位置/透明度/动画…),失败则用默认值 + try { + this.appearance = normalizeAppearance({ ...DEFAULT_ISLAND_APPEARANCE, ...getConfig().island }); + } catch { + this.appearance = { ...DEFAULT_ISLAND_APPEARANCE }; + } + recomputeSizes(this.appearance); if (this.win && !this.win.isDestroyed()) return; const win = new BrowserWindow({ @@ -121,7 +173,7 @@ class IslandController { }, }); - win.setAlwaysOnTop(true, 'screen-saver'); + win.setAlwaysOnTop(this.appearance.alwaysOnTop, 'screen-saver'); win.setVisibleOnAllWorkspaces(true, { visibleOnFullScreen: true }); win.setIgnoreMouseEvents(false); win.on('closed', () => { @@ -164,7 +216,8 @@ class IslandController { this.emit(this.pendingState); this.pendingState = null; } - // 首次进入时同步一次当前状态,保证渲染进程不会停在初始默认值 + // 首次进入时同步一次外观与状态,保证渲染进程不会停在初始默认值 + this.emitAppearance(); this.emit(); logger.info('灵动岛已就绪(置顶透明窗口,顶部居中)'); } @@ -349,6 +402,7 @@ class IslandController { */ hideImmediately(): void { this.clearTimers(); + this.cancelBoundsAnimation(); this.fadeToken += 1; const changed = this.state.mode !== 'hidden' || this.state.reason !== null; if (changed) { @@ -363,6 +417,7 @@ class IslandController { destroy(): void { this.clearTimers(); + this.cancelBoundsAnimation(); if (this.win && !this.win.isDestroyed()) this.win.destroy(); this.win = null; } @@ -437,12 +492,25 @@ class IslandController { height: number; } { const area = screen.getPrimaryDisplay().workArea; - return { - x: Math.round(area.x + (area.width - size.width) / 2), - y: area.y + 8, - width: size.width, - height: size.height, - }; + const margin = 8; + let x = Math.round(area.x + (area.width - size.width) / 2); + let y = area.y + margin; + + switch (this.appearance.position) { + case 'top-left': + x = area.x + margin; + break; + case 'top-right': + x = area.x + area.width - size.width - margin; + break; + case 'bottom-center': + y = area.y + area.height - size.height - margin; + break; + default: + break; + } + + return { x, y, width: size.width, height: size.height }; } /** 状态变更:先通知渲染进程,再驱动窗口尺寸/透明度动画 */ @@ -532,19 +600,31 @@ class IslandController { private fadeIn(): void { if (!this.win || this.win.isDestroyed()) return; + const target = this.appearance.opacity; + if (!this.appearance.animations) { + this.fadeToken += 1; + this.win.setOpacity(target); + return; + } const token = ++this.fadeToken; let opacity = this.win.getOpacity(); const step = (): void => { if (!this.win || this.win.isDestroyed() || token !== this.fadeToken) return; - opacity = Math.min(1, opacity + 0.16); + opacity = Math.min(target, opacity + 0.16); this.win.setOpacity(opacity); - if (opacity < 1) setTimeout(step, 16); + if (opacity < target) setTimeout(step, 16); }; step(); } private fadeOut(): void { if (!this.win || this.win.isDestroyed() || !this.win.isVisible()) return; + if (!this.appearance.animations) { + this.fadeToken += 1; + this.win.hide(); + this.win.setOpacity(1); + return; + } const token = ++this.fadeToken; let opacity = this.win.getOpacity(); const step = (): void => { @@ -563,7 +643,12 @@ class IslandController { /** * 尺寸/位置缓动:Windows 下没有原生窗口动画,这里按帧插值实现"形变"效果。 - * `spring` 使用回弹缓动(轻微过冲后回落),用于"展开成卡片"的弹簧手感。 + * + * 用**单一 requestAnimationFrame 循环**驱动(需求 4): + * - 不再使用 setTimeout 链:避免掉帧、避免"每帧重新排定时器"带来的节奏抖动 + * - 锚点固定:横向/纵向都由 computeBounds 决定,形变过程中卡片上边缘(或下边缘)不动 + * - 关闭动画(appearance.animations = false)时直接落到目标尺寸 + * - `spring` 使用回弹缓动(轻微过冲后回落),用于"展开成卡片"的弹簧手感 */ private animateBounds(size: { width: number; height: number }, options: { spring?: boolean } = {}): void { if (!this.win || this.win.isDestroyed()) return; @@ -571,12 +656,19 @@ class IslandController { const to = this.computeBounds(size); if (from.width === to.width && from.height === to.height && from.x === to.x && from.y === to.y) return; + this.cancelBoundsAnimation(); const token = ++this.boundsToken; + + if (!this.appearance.animations) { + this.win.setBounds(to); + return; + } + const spring = options.spring === true; - const duration = spring ? 340 : 260; + const duration = (spring ? 340 : 260) / Math.max(0.25, this.appearance.speed); const startedAt = Date.now(); - const step = (): void => { + const frame = (): void => { if (!this.win || this.win.isDestroyed() || token !== this.boundsToken) return; const progress = Math.min(1, (Date.now() - startedAt) / duration); const eased = spring ? easeOutBack(progress) : 1 - Math.pow(1 - progress, 3); // easeOutCubic @@ -587,10 +679,98 @@ class IslandController { height: Math.max(1, Math.round(from.height + (to.height - from.height) * eased)), }; this.win.setBounds(bounds); - if (progress < 1) setTimeout(step, 12); + if (progress < 1) { + this.boundsFrame = scheduleFrame(frame); + return; + } + // 收尾对齐到最终尺寸,避免四舍五入留下 1px 误差(会让卡片边缘"抖一下") + this.win.setBounds(to); + this.boundsFrame = null; + this.applyFocusable(); }; - step(); + this.boundsFrame = scheduleFrame(frame); } + + /** 取消进行中的尺寸动画(帧循环) */ + private cancelBoundsAnimation(): void { + if (this.boundsFrame !== null) { + cancelFrame(this.boundsFrame); + this.boundsFrame = null; + } + this.boundsToken += 1; + } + + /** + * 应用外观设置(设置页实时生效):尺寸联动、透明度、置顶、动画开关与位置。 + * 尺寸只改窗口与卡片变量,渲染进程用 CSS 变量适配,不会引发布局错乱。 + */ + setAppearance(patch: Partial): void { + this.appearance = normalizeAppearance({ ...this.appearance, ...patch }); + recomputeSizes(this.appearance); + + if (this.win && !this.win.isDestroyed()) { + this.win.setAlwaysOnTop(this.appearance.alwaysOnTop, 'screen-saver'); + if (this.win.isVisible()) { + // 显示中:立即应用透明度(隐藏时由 fadeIn 负责) + this.win.setOpacity(this.appearance.opacity); + } + } + this.emitAppearance(); + // 外观变化后按新尺寸重新同步(隐藏态不显示,不做额外动作) + if (this.state.mode !== 'hidden') this.syncWindow(); + logger.info( + `灵动岛外观已更新:${this.appearance.width}x${this.appearance.height} 圆角=${this.appearance.radius} ` + + `透明度=${this.appearance.opacity} 位置=${this.appearance.position} 动画=${this.appearance.animations} ` + + `速度=${this.appearance.speed}`, + ); + } + + getAppearance(): IslandAppearance { + return { ...this.appearance }; + } + + /** 把外观同步给灵动岛渲染进程(CSS 变量) */ + private emitAppearance(): void { + if (!this.win || this.win.isDestroyed() || !this.ready) return; + this.win.webContents.send('island:appearance', this.getAppearance()); + } +} + +/** 按外观设置换算各形态尺寸(胶囊尺寸可调,展开卡按比例联动,保证内容不溢出) */ +export function recomputeSizes(appearance: IslandAppearance): void { + const widthDelta = appearance.width - BASE.pill.width; + const heightDelta = appearance.height - BASE.pill.height; + const grow = (size: { width: number; height: number }): { width: number; height: number } => ({ + width: Math.max(appearance.width, size.width + widthDelta), + height: Math.max(appearance.height, size.height + heightDelta), + }); + SIZES = { + hidden: { width: appearance.width, height: appearance.height }, + pill: { width: appearance.width, height: appearance.height }, + expanded: grow(BASE.expanded), + }; + URGENT_SIZE = grow(BASE.urgent); + CALL_SIZE = grow(BASE.call); +} + +/** 夹紧外观取值(越界值直接收敛,避免用户配置破坏布局) */ +export function normalizeAppearance(input: IslandAppearance): IslandAppearance { + const clamp = (value: number, min: number, max: number): number => + Math.min(max, Math.max(min, Math.round(value * 100) / 100)); + return { + height: clamp(input.height, 36, 72), + width: clamp(input.width, 220, 420), + radius: clamp(input.radius, 8, 32), + opacity: clamp(input.opacity, 0.4, 1), + accent: /^#[0-9a-fA-F]{6}$/.test(input.accent) ? input.accent : DEFAULT_ISLAND_APPEARANCE.accent, + fontSize: clamp(input.fontSize, 11, 18), + animations: input.animations !== false, + speed: clamp(input.speed, 0.5, 2), + position: ['top-center', 'top-left', 'top-right', 'bottom-center'].includes(input.position) + ? input.position + : 'top-center', + alwaysOnTop: input.alwaysOnTop !== false, + }; } /** 回弹缓动(easeOutBack):进度超过 1 形成轻微过冲,营造弹簧感 */ @@ -620,6 +800,12 @@ export function registerIslandIpc(): void { ipcMain.handle('island:get-state', () => island.getState()); + ipcMain.on('island:set-appearance', (_event, patch: Partial) => { + if (patch) island.setAppearance(patch); + }); + + ipcMain.handle('island:get-appearance', () => island.getAppearance()); + ipcMain.on('island:action', (_event, payload: IslandActionPayload) => { if (!payload?.action) return; island.handleAction(payload); diff --git a/packages/desktop-client/src/main/smoke.ts b/packages/desktop-client/src/main/smoke.ts index e66fe92..fea451f 100644 --- a/packages/desktop-client/src/main/smoke.ts +++ b/packages/desktop-client/src/main/smoke.ts @@ -5,6 +5,7 @@ import type { BrowserWindow, NativeImage } from 'electron'; import type { IslandNotification } from '@classhelper/shared'; import { getDiagnostics } from './ipc.js'; import { island, ISLAND_CALL_SIZE, ISLAND_SIZES, ISLAND_URGENT_SIZE } from './island.js'; +import { destroyTray, getTrayState, isTrayReady } from './tray.js'; interface SmokeResult { name: string; @@ -175,7 +176,11 @@ function makeNotification( * 5. 点击卡片空白处 / 右上角收起按钮 → 回缩为胶囊 * 6. 上课时间段内点击胶囊不会展开(上课不显示灵动岛) */ -async function runIslandChecks(record: Recorder, results: SmokeResult[]): Promise { +async function runIslandChecks( + mainWin: BrowserWindow, + record: Recorder, + results: SmokeResult[], +): Promise { record('灵动岛窗口已创建(置顶/透明/不占任务栏)', island.isReady(), `ready=${island.isReady()}`); if (!island.isReady()) return; @@ -449,7 +454,13 @@ async function runIslandChecks(record: Recorder, results: SmokeResult[]): Promis }, { inClass: true }, ); - await sleep(900); + // 采样状态轨迹,便于定位"出现了又被隐藏"这类时序问题 + const callTrace: string[] = []; + for (let index = 0; index < 9; index += 1) { + await sleep(100); + const snapshot = island.getState(); + callTrace.push(`${snapshot.mode}/${snapshot.reason ?? '-'}`); + } const callState = island.getState(); const callDom = await islandWindow?.webContents.executeJavaScript( `(() => ({ @@ -525,6 +536,126 @@ async function runIslandChecks(record: Recorder, results: SmokeResult[]): Promis `紧急态偏红=${urgentReddish} 最外圈偏红=${edgeReddish}(要求 0)`, ); + // 8) 个性化外观:高度/宽度/圆角/字号/透明度/动画速度实时生效,且不破坏布局 + const appearanceBefore = island.getAppearance(); + island.setAppearance({ height: 56, width: 300, radius: 26, fontSize: 14, opacity: 0.92, speed: 1.5 }); + island.handleAction({ action: 'dismiss' }); + await sleep(300); + island.pushNotification(makeNotification('smoke-appearance', 'NORMAL', '外观设置校验'), { + inClass: false, + }); + await sleep(600); + const pillBounds = islandWindow?.getBounds(); + const cssVars = await islandWindow?.webContents.executeJavaScript( + `(() => { + const style = getComputedStyle(document.documentElement); + const card = document.querySelector('.island-card'); + return { + h: style.getPropertyValue('--island-h').trim(), + w: style.getPropertyValue('--island-w').trim(), + radius: style.getPropertyValue('--island-radius').trim(), + font: style.getPropertyValue('--island-font').trim(), + accent: style.getPropertyValue('--island-accent').trim(), + cardHeight: card ? Math.round(card.getBoundingClientRect().height) : 0, + }; + })()`, + ); + record( + '个性化外观生效(高度/宽度/圆角/字号 → 窗口与卡片同步)', + pillBounds?.width === 300 && + pillBounds?.height === 56 && + cssVars?.h === '56px' && + cssVars?.w === '300px' && + cssVars?.radius === '26px' && + cssVars?.font === '14px', + `窗口=${pillBounds?.width ?? '-'}x${pillBounds?.height ?? '-'} CSS变量 h=${cssVars?.h} w=${cssVars?.w} ` + + `圆角=${cssVars?.radius} 字号=${cssVars?.font} 卡片高=${cssVars?.cardHeight}`, + ); + + // 展开后内容不溢出(高度调大也不能出现内容超出卡片) + island.handleAction({ action: 'expand' }); + await sleep(700); + const overflowCheck = await islandWindow?.webContents.executeJavaScript( + `(() => { + const card = document.querySelector('.island-card.expanded'); + if (!card) return null; + return { + overflow: card.scrollHeight - card.clientHeight, + width: Math.round(card.getBoundingClientRect().width), + height: Math.round(card.getBoundingClientRect().height), + }; + })()`, + ); + record( + '调整尺寸后内容不溢出', + Boolean(overflowCheck) && overflowCheck.overflow <= 1, + `卡片=${overflowCheck?.width ?? '-'}x${overflowCheck?.height ?? '-'} 溢出=${overflowCheck?.overflow ?? '-'}px`, + ); + + // 9) 抖动修复(需求 4):只量"收回"过程 + // - 窗口宽度必须单调收缩(由主进程 rAF 循环驱动,不回跳) + // - 卡片布局尺寸用 offsetWidth/offsetTop(不含 CSS transform),只允许在"详情/胶囊"两种固定值间切换 + island.setAppearance(appearanceBefore); + await sleep(300); + island.handleAction({ action: 'expand' }); + await sleep(700); + const jitterSamples: { win: number; cardWidth: number; cardTop: number }[] = []; + const jitterSampler = setInterval(() => { + const winWidth = islandWindow?.getBounds().width ?? 0; + void islandWindow?.webContents + .executeJavaScript( + `(() => { + const card = document.querySelector('.island-card'); + return card ? { width: card.offsetWidth, top: card.offsetTop } : null; + })()`, + ) + .then((value: { width: number; top: number } | null) => { + if (value) jitterSamples.push({ win: winWidth, cardWidth: value.width, cardTop: value.top }); + }) + .catch(() => undefined); + }, 30); + island.handleAction({ action: 'collapse' }); + await sleep(800); + clearInterval(jitterSampler); + + const winSequence = jitterSamples.map((item) => item.win); + const monotonicShrink = winSequence.every( + (width, index) => index === 0 || width <= (winSequence[index - 1] ?? width) + 1, + ); + const cardTops = jitterSamples.map((item) => item.cardTop); + const topSpread = cardTops.length > 0 ? Math.max(...cardTops) - Math.min(...cardTops) : 99; + const cardWidths = [...new Set(jitterSamples.map((item) => item.cardWidth))]; + const expectedWidths = [ISLAND_SIZES.expanded.width - 8, ISLAND_SIZES.pill.width - 8]; + const widthOk = cardWidths.every((width) => expectedWidths.includes(width)); + record( + '收回过程不抖动(窗口宽度单调收缩 + 卡片布局尺寸不拉伸)', + jitterSamples.length >= 4 && monotonicShrink && topSpread <= 1 && widthOk && cardWidths.length <= 2, + `采样=${jitterSamples.length} 窗口序列=[${winSequence.join(',')}] 单调收缩=${monotonicShrink} ` + + `卡片上边缘波动=${topSpread}px 卡片宽度集合=[${cardWidths.join(',')}](期望 ${expectedWidths.join('/')})`, + ); + // 10) 连续快速开合:最终状态与尺寸必须稳定 + for (let index = 0; index < 5; index += 1) { + island.handleAction({ action: 'expand' }); + await sleep(45); + island.handleAction({ action: 'collapse' }); + await sleep(45); + } + await sleep(600); + const rapidState = island.getState(); + const rapidBounds = islandWindow?.getBounds(); + const currentAppearance = island.getAppearance(); + record( + '连续快速展开/收起后状态与尺寸稳定', + rapidState.mode === 'pill' && + rapidBounds?.width === currentAppearance.width && + rapidBounds?.height === currentAppearance.height, + `mode=${rapidState.mode} 窗口=${rapidBounds?.width ?? '-'}x${rapidBounds?.height ?? '-'}` + + `(期望 ${currentAppearance.width}x${currentAppearance.height})`, + ); + + island.setAppearance(appearanceBefore); + await sleep(300); + // 收尾:隐藏灵动岛,避免影响后续用例 island.handleAction({ action: 'dismiss' }); await sleep(300); @@ -626,6 +757,35 @@ async function runIslandRealtimeCheck( * 结果同时输出到 stdout,并在设置 ELECTRON_SMOKE_RESULT 时写入 JSON 文件 —— * 打包后的 Windows GUI 进程没有 stdout,用结果文件才能在 CI/脚本里验证安装包。 */ + +/** + * 托盘与退出清理校验(需求 5)。 + * 这两个用例会隐藏主窗口并销毁托盘/灵动岛,因此必须放在所有依赖它们的用例之后。 + */ +async function runTrayAndShutdownChecks(mainWin: BrowserWindow, record: Recorder): Promise { + // 11) 关闭到托盘:窗口关闭后进程存活、托盘仍在;清理后资源归零 + const trayBefore = getTrayState(); + mainWin.close(); + await sleep(500); + const afterClose = { visible: mainWin.isVisible(), destroyed: mainWin.isDestroyed(), alive: app.isReady() }; + record( + '关闭窗口隐藏到托盘(进程继续后台运行)', + trayBefore.ready === true && + afterClose.visible === false && + afterClose.destroyed === false && + afterClose.alive === true, + `托盘就绪=${trayBefore.ready} 有图标=${trayBefore.hasIcon} 关闭后 visible=${afterClose.visible} destroyed=${afterClose.destroyed} 进程存活=${afterClose.alive}`, + ); + + destroyTray(); + island.destroy(); + await sleep(200); + record( + '退出前资源清理(托盘/灵动岛已释放)', + isTrayReady() === false && island.isReady() === false, + `托盘=${isTrayReady()} 灵动岛=${island.isReady()}`, + ); +} export async function runSmokeTest(win: BrowserWindow): Promise { const results: SmokeResult[] = []; const record = (name: string, ok: boolean, detail = ''): void => { @@ -744,7 +904,7 @@ export async function runSmokeTest(win: BrowserWindow): Promise { record('断网时回退到本地缓存', Boolean(offline?.ok), String(offline?.detail ?? '')); // ---------------------------------------------------------------- 灵动岛 - await runIslandChecks(record, results); + await runIslandChecks(win, record, results); // 可选:对真实后端做联网集成自检(ELECTRON_SMOKE_ONLINE=1 时启用) if (process.env.ELECTRON_SMOKE_ONLINE === '1') { @@ -797,6 +957,9 @@ export async function runSmokeTest(win: BrowserWindow): Promise { record('冒烟收尾:清理登录态', Boolean(cleanup?.ok), String(cleanup?.detail ?? '')); } + // 托盘与退出清理放在最后:会隐藏主窗口并销毁托盘/灵动岛 + await runTrayAndShutdownChecks(win, record); + const failed = results.filter((item) => !item.ok); const passed = results.length - failed.length; console.log(`\n[SMOKE] ${passed}/${results.length} 项通过`); diff --git a/packages/desktop-client/src/main/tray.ts b/packages/desktop-client/src/main/tray.ts new file mode 100644 index 0000000..f51b9ea --- /dev/null +++ b/packages/desktop-client/src/main/tray.ts @@ -0,0 +1,76 @@ +import fs from 'node:fs'; +import path from 'node:path'; +import { Menu, Tray, app, nativeImage } from 'electron'; +import { logger } from './logger.js'; + +/** + * 系统托盘(需求 5):关闭主窗口不退出程序,而是隐藏到托盘后台运行; + * 托盘图标可恢复窗口,并提供"退出"入口(退出前统一清理资源)。 + */ +let tray: Tray | null = null; + +export interface TrayHandlers { + onShow(): void; + onHide(): void; + onQuit(): void; +} + +/** 托盘图标:优先用打包进 dist/renderer 的 tray.png,其次资源目录 */ +function resolveTrayIcon(): string | null { + const candidates = [ + path.join(__dirname, '../renderer/tray.png'), + path.join(process.resourcesPath ?? '', 'tray.png'), + ]; + for (const candidate of candidates) { + if (candidate && fs.existsSync(candidate)) return candidate; + } + return null; +} + +export function createTray(handlers: TrayHandlers): Tray | null { + if (tray && !tray.isDestroyed()) return tray; + + const iconPath = resolveTrayIcon(); + const image = iconPath ? nativeImage.createFromPath(iconPath) : nativeImage.createEmpty(); + tray = new Tray(image); + + tray.setToolTip('班级小助手(后台运行中)'); + tray.setContextMenu( + Menu.buildFromTemplate([ + { label: '显示主窗口', click: () => handlers.onShow() }, + { label: '隐藏到托盘', click: () => handlers.onHide() }, + { type: 'separator' }, + { label: '退出班级小助手', click: () => handlers.onQuit() }, + ]), + ); + // 左键单击/双击托盘图标:恢复窗口(用户习惯) + tray.on('click', () => handlers.onShow()); + tray.on('double-click', () => handlers.onShow()); + + logger.info(iconPath ? `系统托盘已就绪:${iconPath}` : '系统托盘已就绪(未找到图标文件,使用空图标)'); + return tray; +} + +export function destroyTray(): void { + if (!tray) return; + try { + tray.destroy(); + } catch { + /* 忽略销毁异常 */ + } + tray = null; + logger.info('系统托盘已销毁'); +} + +export function isTrayReady(): boolean { + return Boolean(tray && !tray.isDestroyed()); +} + +/** 供"关于/设置"展示(也可用于冒烟断言) */ +export function getTrayState(): { ready: boolean; hasIcon: boolean; appPath: string } { + return { + ready: isTrayReady(), + hasIcon: Boolean(resolveTrayIcon()), + appPath: app.getPath('exe'), + }; +} diff --git a/packages/desktop-client/src/preload/index.ts b/packages/desktop-client/src/preload/index.ts index bc252b6..17f0f08 100644 --- a/packages/desktop-client/src/preload/index.ts +++ b/packages/desktop-client/src/preload/index.ts @@ -29,6 +29,10 @@ const bridge: DesktopBridge = { ipcRenderer.send('island:class-state', payload); }, islandGetState: () => ipcRenderer.invoke('island:get-state'), + islandSetAppearance: (appearance): void => { + ipcRenderer.send('island:set-appearance', appearance); + }, + islandGetAppearance: () => ipcRenderer.invoke('island:get-appearance'), /** 灵动岛点了"标为已读":主进程转交渲染进程同步通知中心 */ onIslandMarkRead: (handler: (id: string) => void): void => { ipcRenderer.on('island:mark-read', (_event, id: string) => handler(id)); diff --git a/packages/desktop-client/src/preload/island.ts b/packages/desktop-client/src/preload/island.ts index 92f7604..8cfc9d5 100644 --- a/packages/desktop-client/src/preload/island.ts +++ b/packages/desktop-client/src/preload/island.ts @@ -1,14 +1,17 @@ import { contextBridge, ipcRenderer } from 'electron'; -import type { IslandState } from '@classhelper/shared'; +import type { IslandAppearance, IslandState } from '@classhelper/shared'; /** * 灵动岛窗口的预加载脚本。 - * 只暴露「订阅状态」与「发送用户操作」两件事,渲染进程不接触任何 Node 能力。 + * 只暴露「订阅状态/外观」与「发送用户操作」两件事,渲染进程不接触任何 Node 能力。 */ export interface IslandBridge { onState(handler: (state: IslandState) => void): void; sendAction(action: 'expand' | 'collapse' | 'dismiss' | 'mark-read' | 'open-app', id?: string): void; getState(): Promise; + /** 订阅个性化外观(设置页改动后实时生效) */ + onAppearance(handler: (appearance: IslandAppearance) => void): void; + getAppearance(): Promise; } const bridge: IslandBridge = { @@ -19,6 +22,10 @@ const bridge: IslandBridge = { ipcRenderer.send('island:action', { action, id }); }, getState: () => ipcRenderer.invoke('island:get-state'), + onAppearance: (handler) => { + ipcRenderer.on('island:appearance', (_event, appearance: IslandAppearance) => handler(appearance)); + }, + getAppearance: () => ipcRenderer.invoke('island:get-appearance'), }; contextBridge.exposeInMainWorld('island', bridge); diff --git a/packages/desktop-client/src/renderer/views/SettingsView.vue b/packages/desktop-client/src/renderer/views/SettingsView.vue index d76468c..b5c1d86 100644 --- a/packages/desktop-client/src/renderer/views/SettingsView.vue +++ b/packages/desktop-client/src/renderer/views/SettingsView.vue @@ -2,7 +2,15 @@ import { computed, onMounted, ref } from 'vue'; import { useRouter } from 'vue-router'; import { ElMessage, ElMessageBox } from 'element-plus'; -import { formatDate } from '@classhelper/shared'; +import { + DEFAULT_ISLAND_APPEARANCE, + ISLAND_APPEARANCE_RANGES as RANGES, + ISLAND_POSITION_LABELS, + ISLAND_POSITIONS, + formatDate, + type IslandAppearance, + type IslandPosition, +} from '@classhelper/shared'; import type { DesktopAppInfo } from '../../types/desktop.js'; import { pingHealth, setApiBaseUrl } from '../api/http.js'; import { normalizeServerUrl } from '../config.js'; @@ -102,9 +110,68 @@ async function logout(): Promise { await router.replace('/login'); } +/* ------------------------------------------------------------ 灵动岛个性化 */ + +const island = ref({ ...DEFAULT_ISLAND_APPEARANCE }); +const savingIsland = ref(false); + +const positionOptions = ISLAND_POSITIONS.map((value) => ({ + value, + label: ISLAND_POSITION_LABELS[value], +})); + +/** 读取当前生效的外观(主进程为单一事实来源) */ +async function loadIslandAppearance(): Promise { + if (!window.desktop?.islandGetAppearance) return; + island.value = await window.desktop.islandGetAppearance(); +} + +/** + * 改动即生效:属性变化时先应用(实时预览),点"保存"再落盘。 + * 高度/宽度只影响窗口与卡片尺寸变量,内容用 flex + 溢出滚动承载,不会溢出或错乱。 + */ +function applyIslandAppearance(patch: Partial = {}): void { + island.value = { ...island.value, ...patch }; + window.desktop?.islandSetAppearance(island.value); +} + +async function saveIslandAppearance(): Promise { + if (!window.desktop?.saveConfig) return; + savingIsland.value = true; + try { + await window.desktop.saveConfig({ island: island.value }); + ElMessage.success('个性化设置已保存'); + } finally { + savingIsland.value = false; + } +} + +async function resetIslandAppearance(): Promise { + await ElMessageBox.confirm('恢复灵动岛的默认外观?', '恢复默认', { type: 'warning' }); + applyIslandAppearance({ ...DEFAULT_ISLAND_APPEARANCE }); + await saveIslandAppearance(); +} + +/** 本地推一条测试通知,立刻确认外观效果 */ +function testIsland(): void { + window.desktop?.islandPush?.({ + notification: { + id: `appearance-test-${Date.now()}`, + title: '灵动岛外观预览', + content: '拖动滑块即可实时预览:高度、宽度、圆角、透明度、字号、主题色、位置与动画。', + priority: 'NORMAL', + createdAt: new Date().toISOString(), + courseName: null, + teacherName: '本地预览', + }, + context: { inClass: false, currentPeriodEnd: null }, + }); +} + onMounted(async () => { await loadAppInfo(); await appStore.refreshCacheStats(); + await loadIslandAppearance(); }); @@ -150,6 +217,118 @@ onMounted(async () => { + + + + + + + + + + + + + + + + + + + + + + + + 用于高亮、按钮与进度条 + + + + + + + + + 关闭后展开/收起为瞬时生效 + + + + + +
+ + 保存设置 + + 预览效果 + 恢复默认 +
+ +
diff --git a/packages/desktop-client/src/types/desktop.d.ts b/packages/desktop-client/src/types/desktop.d.ts index 4c65044..ecb62c1 100644 --- a/packages/desktop-client/src/types/desktop.d.ts +++ b/packages/desktop-client/src/types/desktop.d.ts @@ -2,7 +2,7 @@ * 主进程与渲染进程之间的桥接契约(preload 通过 contextBridge 暴露)。 * 渲染进程只依赖这些最小 API,不接触 Node.js。 */ -import type { IslandNotification, IslandState } from '@classhelper/shared'; +import type { IslandAppearance, IslandNotification, IslandState } from '@classhelper/shared'; export interface DesktopStoredConfig { /** 后端服务地址,例如 http://127.0.0.1:4000 */ @@ -11,6 +11,8 @@ export interface DesktopStoredConfig { username: string; /** 登录令牌(主进程用 safeStorage 加密后落盘,读回时自动解密) */ token: string | null; + /** 个性化设置:灵动岛外观(高度/宽度/圆角/透明度/主题色/字号/动画/位置/置顶) */ + island: IslandAppearance; } export interface DesktopAppInfo { @@ -55,6 +57,10 @@ export interface DesktopBridge { islandSetClassState(payload: IslandClassStatePayload): void; /** 读取灵动岛当前状态(设置页/冒烟验证用) */ islandGetState(): Promise; + /** 应用灵动岛外观设置(实时生效) */ + islandSetAppearance(appearance: Partial): void; + /** 读取当前生效的外观设置 */ + islandGetAppearance(): Promise; /** 订阅"灵动岛点了标为已读"事件,用于同步通知中心 */ onIslandMarkRead(handler: (id: string) => void): void; } @@ -62,6 +68,9 @@ export interface DesktopBridge { /** 灵动岛窗口自身的桥接(只暴露订阅状态与发送操作) */ export interface IslandRendererBridge { onState(handler: (state: IslandState) => void): void; + /** 订阅外观设置(CSS 变量实时生效) */ + onAppearance(handler: (appearance: IslandAppearance) => void): void; + getAppearance(): Promise; sendAction(action: 'expand' | 'collapse' | 'dismiss' | 'mark-read' | 'open-app', id?: string): void; getState(): Promise; } diff --git a/packages/shared/src/constants.ts b/packages/shared/src/constants.ts index ef8f0a5..50c0278 100644 --- a/packages/shared/src/constants.ts +++ b/packages/shared/src/constants.ts @@ -1,4 +1,4 @@ -import type { NotificationPriority, UserRole } from './types.js'; +import type { NotificationPriority, UserRole } from './types.js'; /** API 前缀 */ export const API_PREFIX = '/api'; @@ -64,6 +64,39 @@ export const WEEKDAY_LABELS: Record = { export const WEEKDAYS: readonly number[] = [1, 2, 3, 4, 5, 6, 7]; +/** 灵动岛默认外观(设置页个性化项的初始值,也是区间校验的单一来源) */ +export const DEFAULT_ISLAND_APPEARANCE = { + height: 44, + width: 268, + radius: 20, + opacity: 1, + accent: '#6cc4ff', + fontSize: 13, + animations: true, + speed: 1, + position: 'top-center', + alwaysOnTop: true, +} as const; + +/** 个性化设置项的合法区间(前端滑块与后端校验共用,避免越界导致布局错乱) */ +export const ISLAND_APPEARANCE_RANGES = { + height: { min: 36, max: 72 }, + width: { min: 220, max: 420 }, + radius: { min: 8, max: 32 }, + opacity: { min: 0.4, max: 1 }, + fontSize: { min: 11, max: 18 }, + speed: { min: 0.5, max: 2 }, +} as const; + +/** 停靠位置可选值 */ +export const ISLAND_POSITIONS = ['top-center', 'top-left', 'top-right', 'bottom-center'] as const; + +export const ISLAND_POSITION_LABELS: Record<(typeof ISLAND_POSITIONS)[number], string> = { + 'top-center': '顶部居中', + 'top-left': '左上角', + 'top-right': '右上角', + 'bottom-center': '底部居中', +}; /** 默认学期周次上限 */ export const DEFAULT_WEEK_COUNT = 20; diff --git a/packages/shared/src/types.ts b/packages/shared/src/types.ts index 555ed10..545a546 100644 --- a/packages/shared/src/types.ts +++ b/packages/shared/src/types.ts @@ -377,6 +377,33 @@ export interface IslandNotification { subtitle?: string | null; } +/** 灵动岛外观设置(设置页可调,主进程持久化并按此驱动窗口与渲染进程) */ +export interface IslandAppearance { + /** 胶囊高度(px,36~72):展开卡高度按比例联动,保证布局不错乱 */ + height: number; + /** 胶囊宽度(px,220~420) */ + width: number; + /** 卡片圆角(px,8~32) */ + radius: number; + /** 整体不透明度(0.4~1) */ + opacity: number; + /** 主题色(强调色,用于高亮与按钮) */ + accent: string; + /** 基础字号(px,11~18) */ + fontSize: number; + /** 是否启用动画(关闭后展开/收起为瞬时) */ + animations: boolean; + /** 动画速度倍率(0.5 慢 ~ 2 快) */ + speed: number; + /** 显示位置 */ + position: IslandPosition; + /** 是否始终置顶 */ + alwaysOnTop: boolean; +} + +/** 灵动岛停靠位置 */ +export type IslandPosition = 'top-center' | 'top-left' | 'top-right' | 'bottom-center'; + /** 灵动岛当前状态(主进程持有,渲染进程与冒烟测试读取) */ export interface IslandState { mode: IslandMode; diff --git a/scripts/generate-icons.mjs b/scripts/generate-icons.mjs index 967ea8f..9ba101d 100644 --- a/scripts/generate-icons.mjs +++ b/scripts/generate-icons.mjs @@ -24,4 +24,18 @@ const child = spawn(executable, [path.join(root, 'scripts', 'icons', 'render.cjs env: resolveElectronEnv(), }); -child.on('exit', (code) => process.exit(code ?? 1)); +child.on('exit', (code) => { + if (code === 0) { + // 托盘图标需要一张 PNG 随 renderer 一起打包(Vite 会把 public/ 复制到 dist/renderer) + try { + const source = path.join(root, 'packages', 'desktop-client', 'build', 'icon.png'); + const targetDir = path.join(root, 'packages', 'desktop-client', 'public'); + fs.mkdirSync(targetDir, { recursive: true }); + fs.copyFileSync(source, path.join(targetDir, 'tray.png')); + console.log('[icons] 托盘图标已同步:packages/desktop-client/public/tray.png'); + } catch (error) { + console.warn('[icons] 同步托盘图标失败(不影响构建)', error); + } + } + process.exit(code ?? 1); +});