Files
ElyOffice/tasks/reviews/C07.4-r2.md
T

2.5 KiB
Raw Blame History

FAIL

crates/ely-lok/src/worker/input.rs:125 — Check::Enabled 使用异步回调缓存确认本次撤销/重做,随后直接返回成功,违反 LOK-02、LOK-05。实测载入 FODT 并等初始 Undo=disabled 后键入 a,立即 run("edit.undo") 返回 disabled 错误;同一内核的键盘撤销能恢复原文。等 Undo=enabled 后执行一次撤销,立即重做被旧 disabled 状态拒绝,立即再撤销却返回 Ok(()),此时撤销历史已经为空。现有映射测试在每步之间等待状态回调,掩盖此时序。修复方向:按本次操作的当前内核历史确认可用性及执行结果,补充键入后立即撤销、撤销后立即重做和连续撤销回归。

crates/ely-lok/src/commands.rs:115 — Points 只校验浮点数和范围,放行内核无法原样表示的精度;worker 的后置 Reports 检查报错时已经留下格式修改。实测打开原字号 12 的 FODT、全选后 run("format.size", &["18.01"]) 返回 Err,内核状态变为 FontHeight=18、ModifiedStatus=true、Undo=enabled,保存文件含 fo:font-size="18pt"。修复方向:在 client/view 排队前及 worker 派发前按固定内核的字号表示精度校验参数,错误输入保留原格式;加入精度边界和失败后保存内容的回归。

crates/ely-lok/src/events/parse.rs:100 — 空段落回调覆盖当前单元格文本,单元格取消编辑后的文本桥丢失,违反 §7 尾段。实测载入 FODS,A1="Hello 世界",方向键先到 B1 再回 A1,F2 进入编辑、键入 Z、Escape 取消;内核发出 kind 62 的 content="",桥接文本随之变空。A1 仍被选中,保存结果仍含 "Hello 世界";真窗口系统 AX 连续三次读到 textarea value=。现有单元格测试只覆盖方向键导航。修复方向:同步单元格编辑退出与取消后的当前焦点文本,处理编辑段落和所选单元格的实际回调时序,加入取消编辑的真实内核及 AX 回归。

crates/ely-lok/src/view.rs:206 — poll_events 失败只写日志并停止观察,应用的 LokError 订阅者收不到故障,违反“出错就暴露”。实测创建 LokView、订阅 LokError 并等初始 "Hello 世界" 桥接完成,终止其 worker,保持视图存活并推进调度器;订阅者收到零个错误,旧内核状态继续留在视图中。现有失效文档测试随后发送按键,由输入队列暴露错误,覆盖不到空闲观察失败。修复方向:在观察失败路径向存活视图发出 LokError,并加入空闲时 worker 退出的回归。