Files
LoveChengke 682818dd4a feat: 重做灵动岛编辑器与课表档案时间表编辑
灵动岛
- 重构自定义方案编辑器:组件库常驻、拖拽添加与排序、方案切换/新建/复制/删除、编辑模式预览与缩放,容器在编辑时展开全部子组件。
- 新增天气简报组件:主进程固定请求 Open-Meteo,只接受数值经纬度,失败退避并保留本次运行缓存;冒烟模式不访问外网。
- 倒计时支持目标名称与日期;课程表组件新增「今日时间点」,按时间点类型折叠/展开,课中不再常驻倒计时。
- preload 暴露 getIslandWeather 与时间点订阅,契约同步 desktop.d.ts。

课表档案
- 时间点默认课程:布局返回 defaultCourse,日课表没有条目时回退;新增 apply-default 覆盖所有引用课表;全校时间表不携带默认课程。
- 新增 ClassIsland 式时间表编辑器(列表/时间轴视图、拖动把柄、按类型添加、默认时长与缩放)与「课表信息」表单。
- 课表页默认进入单表编辑,底部保留列表/周/月视图;时间表支持新路由删除。
- 「课间」统一改称「课间休息」。

验证
- pnpm typecheck、pnpm lint 通过。
- verify:e2e 隔离验收 248/248 项通过(含默认课程回退、覆盖写入与时间表删除)。
- ui-smoke 覆盖单表编辑、课表信息与时间轴视图,并更新回归截图。
2026-10-25 16:41:29 +08:00

6.0 KiB

title, description
title description
灵动岛 经典提醒、自定义常驻方案、课程与课件传输。

灵动岛

灵动岛是客户端的独立透明窗口,不占任务栏。设置中可选择经典 fixed 或自定义 custom,默认 fixed。 自定义当前即常驻模式;旧 residentEnabled 字段只作兼容,不是另一个独立开关。 两种布局共用一个原生窗口,切布局不会新开第二个岛。

两种消息展示

场景 经典 fixed 自定义 custom
空闲 默认隐藏,可选细缝 显示常态组件行
课间普通通知/作业 胶囊,点击详情 铃铛和未处理数量,点击查看
课堂普通通知/作业 暂存,下课补弹 铃铛提示,允许主动查看
普通叫人 课堂也保留可点胶囊,不自动展开 铃铛提示,主动查看
紧急通知/紧急叫人 无论课堂状态立即展开 铃铛提示,由用户主动展开
无消息时点击 按经典空闲状态处理 展示方案的无通知展开内容
处理完成 队列清空后隐藏或细缝 回到常态组件行

多条消息按 id 去重,按优先级和时间排序;详情显示列表与“展开更多”,超出工作区提示到应用中操作。 “知道了/标为已读”按当前列表语义处理;本机刚录的作业通过指纹避免重复提醒自己。 课堂发布紧急通知的二次确认是服务端规则,见通知,不因本机布局改变。

经典布局的历史展示图(供外观参考,具体行为以上表和当前设置为准):

场景 展示图
经典胶囊 胶囊
展开详情 详情
紧急通知 紧急

编辑自定义方案

“设置 → 灵动岛 → 自定义 → 编辑岛内组件”进入主窗口设置页。 页面上方排列当前组件,右上角选择配置方案;刷新图标重置当前方案,加号新建方案,文件夹菜单提供方案设置、复制、删除及 JSON 导入导出。 下方组件库常驻显示文本、分割线、课程表、日期、时钟、天气简报、倒计时和组合容器,并保留班级通知、作业和叫人组件。 从组件库拖入上方的行或容器以添加,拖动已有组件调整顺序或跨行移动;也可点击组件库添加到选中的容器或当前行。 分别编辑常态 rows 与无消息展开 expandedRows,点选组件打开内容、外观、尺寸与隐藏条件设置;行可以新增、排序、设为主要行或删除。 “进入编辑模式”切换为实际内容预览,支持预览缩放;退出后回到组件标签排列。轮播和滚动容器在编辑时展示全部子组件,便于选择和排列。 倒计时可指定目标名称与日期,也可按课表倒数至上课、下课或放学。 天气简报需填写地点名称及经纬度,使用 Open-Meteo 的天气数据,每 15 分钟更新;断网时保留本次客户端运行中的缓存并标明“缓存”。天气提示根据天气概况生成,不提供官方气象预警。 方案保存到本机 config.json.islandLayout,不增加服务端同步。 编辑预览不创建额外桌面窗口;打开编辑页不自动切布局,应用后启用自定义方案。 保存按序进行,失败可重试,主题与关怀模式沿用客户端设置。

外观、位置与输入

经典模式可调宽高、字号、主题色、黑色/半透明/渐变、停靠与边距;自定义内容根据实际测量适配工作区。 自定义方案可配置缩放、圆角、颜色和行间距,默认值与范围在 shared/island-layout.ts。 左右边距只在左/右停靠时生效,居中锚点仍在屏幕中线。 触摸屏自动进入触摸模式,保留触摸命中和失焦宽限;鼠标模式按光标控制输入穿透。 自定义常驻内容支持鼠标避让淡化及反转,交互入口、展开/编辑和触摸操作按实现暂停避让。 应用内动画开关决定岛动画,不能用主窗口的减少动态效果说明替代岛自身规则。

经典几何与配色参考见设计令牌,实现入口见当前实现约定。

课程与课件

准备、上课、下课、下课前倒数和课中进度等提醒在本机配置独立开关,课程依据服务端解析后的课表。

自定义常驻岛的「课程表」组件可选「当前时间点 / 下一节课 / 今日时间点」: 「今日时间点」显示当天全部时间点,只有当前项展开显示起止时间,其余折叠只显示课程名; 课间休息与「默认隐藏」的上课时间点折叠时完全隐藏,轮到它们时才展开;分割线显示一条竖线,行动不显示。 课中课程表不再常驻显示倒计时,只在最后一分钟由既有的「下课提醒」页显示「距下课还剩」; 倒计时阈值沿用本机提醒设置(默认 60 秒)。没有时间点数据时退回按课表条目显示课程。 经典 fixed 岛的课中提醒条保持原有倒计时行为。

课件接收时显示文件名、类型、教师、字节和进度,覆盖当前固定/自定义内容;完成后校验 SHA256 并回执。 客户端不会自动执行收到的文件,见课件。

验证与排查

默认 verify:desktop/verify:packaged 是后台快速检查,不显示岛或托盘。 只有显式 --visual 或 verify:desktop:visual 才进行桌面像素、透明度、动画和截图验收。 若出现多岛,先确认是否存在用户实例与显式视觉验证实例;不要把默认后台冒烟解释成可见验证岛。