Files
rhinelab-ui/verification/PWA-RECOVERY.md
T

3.0 KiB
Raw Blame History

Win11 桌面动效与 PWA 更新入口

日期:2026-09-09。反馈环境:Windows 11,Chrome 152.0.7977.83,Edge 同样出现症状。

复现与判断

在本机 Chrome 152.0.7977.83 和 Edge 152.0.4191.66 中使用新建浏览器上下文,对比 prefers-reduced-motion 的两种状态。正常状态进入开机动画;reduce 状态直接进入阵列,减少选档、镜头和文字动效。两种状态都可打开右上角圆形图标对应的设置窗口。默认继承系统偏好和跳过开机的代码在 PWA 之前的 c24afa5 中已存在。

这证明系统减少动画可以造成相同症状,不能证明反馈者的 Win11 开关一定关闭;未直接检查对方设备。原先设置只有图标,提示要求“在设置中更新”却没有可点操作,确实不易找到入口。

另用两个完整生产构建复现旧版本更新:先安装旧 Service Worker,再切换服务端新版,调用 Chromium Network.clearBrowserCache 后重新加载。页面仍由旧 Service Worker 提供,新版处于 waiting。只清理 HTTP 缓存不能保证替换离线副本。

修改

  • 设置图标增加可见文字,新版就绪后在底部提供“更新并重启”,保留设置内的更新按钮。
  • update.html / update.js 不进入离线清单,可通过网络加载恢复入口;用户点击后检查并下载新版,等待激活后返回。保留收藏与偏好。
  • 设置中说明减少动效会跳过开机与简化选档,并提供“启用完整动效并重播”。选择保存在本站,系统辅助设置不变。
  • 正文解密遮罩改为遵循 .reduce-motion,避免系统媒体查询覆盖用户在本站明确开启完整动效的选择。

回归方式

scripts/check-startup-motion.mjs 检查正常启动、减少动画启动、明确覆盖系统偏好、重播、选档脉冲、正文遮罩和刷新后保留偏好。

scripts/check-pwa-recovery.mjs 以 PWA_PREVIOUS_DIST 指向保留的旧构建,检查普通缓存清理后仍运行旧版、从网络恢复入口迁移、保留收藏与动效偏好、更新后离线重载,以及从未安装 Service Worker 的新访客。

两个脚本分别使用 Chrome 与 REVIEW_CHANNEL=msedge。另运行 scripts/check-pwa.mjs,覆盖直接更新按钮、完整离线资源、失败更新保留旧版及不清理其他应用缓存。截图和报告存放于 .tools/responsive。浏览器动效偏好通过自动化设置,未修改测试机的 Windows 全局辅助功能设置。

本次结果:Chrome 152.0.7977.83 与 Edge 152.0.4191.66 的动效和旧版恢复测试通过。Chrome 额外模拟恢复下载时一个图标返回 503,页面报告失败并继续保留上一完整版本;直接更新、离线查看、偏好保留和模态输入隔离也通过。

平台依据:MDN 的系统减少动画映射、Chrome 的 Service Worker 更新生命周期。