5.7 KiB
FAIL
apps/ely-show/src/slideshow/start.rs:132 — 开启演讲者视图时,观众窗口的 FocusScope 没有取得键盘焦点;两窗口的 WindowOptions 又都设为 focus=true,后开的观众窗口会取得平台焦点。复现:按该分支创建 Audience,向窗口发送 right,位置仍为 Slide { part: 0, clicks: 0 };给同一窗口的 Audience.focus 聚焦后再次发送 right,正常进入 End。观众窗口上的翻页、黑屏、激光笔和 Esc 因此失效,违反 SHOW-11/12。修复方向:给两个窗口各自的根作用域建立焦点,再独立决定启动时激活哪一个窗口;加入双窗口的实际按键分发回归测试。
apps/ely-show/src/slideshow/start.rs:56 — “从当前幻灯片开始”捕获的是异步读取缓存 extra.slides.current,缩略图刚发出的 show_part 尚未更新这个缓存。复现:编辑器位于第三张,点击第二张后立即 Shift+F5;探针在同一次界面更新中调用对应操作,放映位置实际为 part: 2,预期为 part: 1。违反 SHOW-11 的当前页起播要求。修复方向:保留发起时所选页的身份,等待该标签的有序输入落地,再读取并核对起播页;测试覆盖选页后立即启动。
apps/ely-show/src/slideshow/media.rs:67 — 放映只处理 Player::open 的同步错误,media_tick 完全跳过 State::Loading/Failed;播放器异步解码失败后原因被丢弃。复现:文档链接到一个存在但内容损坏的 MP4,单击媒体对象;主线程原生探针得到 AVFoundation State::Failed("Cannot Open"),连续调用 media_tick 后放映仍保留失败播放器,应用没有错误提示。违反 SHOW-10、PRD 10.3 与出错暴露规则。修复方向:持续观察载入及播放状态,把异步失败原因交给应用提示,停止失败播放并保留文档对象;加入损坏文件与载入后失败的放映回归测试。
apps/ely-show/src/slideshow.rs:155 — 放映图层始终从编辑标签的同一个 Doc 按需读取,启动时读取的 SlideShow 元数据无法冻结页面内容,违反 agents.md C10.5 的“放映中的编辑不进入本次放映”。复现:两张幻灯片,第一页红色矩形;开始放映、跳到第二页使第一页缓存释放,在编辑文档中把第一页矩形改为蓝色,再跳回第一页。真实 LOK 探针比较 RenderImage 的像素字节,重新读取的观众画面已变色;动画元数据仍来自启动时,随后还会与新图层混用。修复方向:在启动时建立固定修订的放映文档,元数据、图层及嵌入媒体均从该文档读取,编辑文档继续独立更新。
apps/ely-show/src/slideshow/start.rs:50 — 启动守卫只检查已经打开的 show,后台读取期间没有启动中的状态,回调也只核对活动标签。复现:同一标签连续触发两次 F5 对应的 start_show,两次读取均打开窗口;探针实际得到三个窗口(编辑器加两个观众窗口),预期两个。后一次覆盖 deck.show,前一次窗口退出还会清空后一次的 show 状态。修复方向:在派发读取前占住启动状态,并按启动请求身份核对回调、窗口打开与退出;加入连续启动和旧窗口结束的生命周期测试。
apps/ely-show/src/slideshow.rs:199 — 每个单击组直接记录当前时间,前一组的结束时刻和入页切换的结束时刻均未参与约束;steps::runs 随后把各组独立叠加。复现:两个持续十秒的单击淡入,快速按两次下一步;探针得到第二组 begin=0.000393458、第一组 end=10.000387125,两组同时运行。切换期间提前单击还会让短动画在切换遮挡下播放完。违反 SHOW-09 的动画顺序及 C10.5 的切换结束后起播约定。修复方向:以此前全部已触发组的结束时刻(含入页切换)约束下一组起点,并测试快速连续单击和切换期间单击。
apps/ely-show/src/preview/compose.rs:45 — 旧页合成强制显示所有动画图层,放映离页时已经执行的退出效果被撤销。复现:第一页红色对象已完成消失动画,第二页使用向左覆盖;Metal 像素探针先确认该对象的最终 visible=false,再渲染切换半程,旧页区域实际读出 Rgba([255, 0, 0, 255]),退出对象重新出现。违反 SHOW-09 的动画播放行为。修复方向:根据旧页离开时的动画时刻和已触发组生成旧页外观,并把该外观用于放映切换;保留预览自己的旧页策略,加入已完成退出效果的像素回归测试。
apps/ely-show/src/slideshow.rs:161 — 图层读取回调无条件写入缓存,页面切换时的 retain 只能清除已经返回的结果,过期的在途结果随后重新进入缓存。复现:第一、第二页图层就绪后,在一次界面更新中数字跳到第三页再跳回第一页;第三页后台结果回来后 stack(2) 仍为 Some,当前及下一页分别为第一、第二页。快速遍历大文稿会累计多个全尺寸图层,违反 C10.5 的“只缓存当前页与下一页”。修复方向:结果落地时重新核对当前页和下一页,丢弃过期结果并限制在途读取;加入连续跳页后缓存数量与内容的回归测试。
apps/ely-show/src/slideshow.rs:196 — 跳到当前页走“同页单击组”分支,transition=false 没有清除 leaving,也没有按跳转重新建立入页时间。复现:从第一页进入带十秒淡化的第二页,切换期间输入 2、Enter;探针发现 leaving 仍为 Some,stage 继续显示从第一页淡入的切换。违反 C10.5 的“跳转与后退无切换”。修复方向:区分同页动画推进与显式跳转,对显式跳转清除旧页切换状态并重建本页起始状态;加入同页数字跳转和 Home/End 的切换中回归测试。