14 lines
3.9 KiB
Markdown
14 lines
3.9 KiB
Markdown
FAIL
|
||
|
||
crates/ely-lok/src/worker.rs:286 — [P1] 上轮局部失效缺陷仍存在:编辑键继续调用 `events::bump`,在 `events.rs:127` 无条件设置 `all=true`,精确矩形仍会被整区失效覆盖,违反 LOK-03。固定补丁引擎实测:两段正文开头按 Return,批次为 `(generation=1, all=true, rects=[])`;远处 `(0,7680,3840,3840)` 图块编辑前后逐字节相同,`LokView::apply_batch` 仍清空全部缓存。纯点击及方向键已保持代际稳定,局部编辑的验收仍失败。修复方向:接通可靠的内容脏区来源,以相交矩形驱动重绘,并验证局部编辑保留未受影响的缓存图块。
|
||
|
||
crates/ely-lok/src/worker.rs:299 — [P1] 新增 `POST_UNO` 路径执行内容变更后没有产生失效或推进修订;当前固定 macOS 后端也没有图块失效回调。实测先编辑到 generation 1,再依次发送 `.uno:SelectAll`、`.uno:Delete`,重新绘制的像素已经改变,响应仍为 generation 1,事件批次为 `(1,false,[])`。`LokView::watch` 因代际相同直接继续等待,缓存中的旧正文会一直显示,违反 LOK-03。修复方向:将 UNO 内容变更纳入可靠的修订与脏区通知链,补充删除、撤销等命令执行后视图刷新的回归测试。
|
||
|
||
crates/ely-lok/src/view.rs:266 — [P1] `Geom::px_of` 已乘 DPI,`prepare` 又把其结果作为 GPUI `Pixels` 布局与绘制尺寸;GPUI 在 `paint_image` 内继续按窗口比例转换到设备像素,造成重复缩放。临时 GPUI 测试实测:zoom=1、DPI=2 时,3840 twips 图块生成 512 像素纹理,却绘制为 512 个逻辑像素;正确逻辑宽度应为 256。此时 `doc_point(256,0)` 返回 `(1920,0)`,正确文档位置应为 `(3840,0)`。因此跨 1x/2x 显示器会改变页面逻辑尺寸、可见范围及滚动距离,违反 LOK-04;现有几何测试仅验证公式往返,未覆盖 GPUI 单位。修复方向:用 zoom 转换文档与 GPUI 逻辑坐标,仅在纹理分辨率转换中应用 DPI,并验证实际绘制尺寸、命中位置及滚动转换。
|
||
|
||
crates/ely-lok/src/view.rs:204 — [P1] 图块送入 `RenderImage` 前交换红蓝通道,导致文档颜色错误。锁定版本的 GPUI `RenderImage` 要求 BGRA,`new` 原样保存帧字节;当前 LOK 同样返回 BGRA。固定引擎绘制红色正文实测得到 1182 个红色像素,样本为 `[0,0,255,255]`;将该像素通过实际 `finish_tile` 后,`RenderImage::as_bytes(0)` 变成 `[255,0,0,255]`,GPUI 会显示蓝色。现有黑白图块测试无法捕获此错误。修复方向:按 GPUI 的 BGRA 契约传递图块,添加红蓝可区分的渲染回归断言。
|
||
|
||
crates/ely-lok/src/view.rs:155 — [P1] 文档尺寸只在构造时读取,失效处理仅更新代际与缓存;滚动上限、图块请求范围和页面裁剪持续使用旧 `doc_size`。固定引擎实测:初始文档为 `(12808,16408)` twips,输入 80 次 Return 后内核尺寸增至 `(12808,32532)`;调用实际 `apply_batch` 后,视图尺寸仍为 `(12808,16408)`。新页面被第 282 行的范围检查及页面 mask 排除,滚动也无法到达新增内容,违反 LOK-04。修复方向:在文档尺寸变化时同步视图尺寸与滚动边界,覆盖增页、删页后的可见范围和裁剪。
|
||
|
||
crates/ely-lok/src/view.rs:139 — [P2] 事件任务被 `detach`,只有代际变化后才检查弱视图句柄;空闲批次始终走 `continue`。释放空闲 `LokView` 后,该任务仍每 50 毫秒轮询并强引用 worker,阻止其释放。临时 GPUI 测试已确认视图弱句柄失效,继续执行 20 个调度步骤后 worker 弱引用仍可升级;显式关闭文档使轮询返回错误后,任务才结束。关闭视图会留下持续工作的事件任务和引擎资源。修复方向:让订阅任务随视图释放而取消,或在每次等待前检查视图存活状态;补充空闲状态关闭视图后的任务与 worker 释放测试。
|