3.1 KiB
FAIL
patches/libreoffice/0008-lok-toc-caption-formula-without-dialogs.patch:240 — [P1] 公式转换用 UTF-16 长度作为向左选择的字符数;补充平面字符会使选区越过刚插入的公式,吞入前面的正文并改变公式内容,违反 DOC-10。实测:在正文先键入 PREFIX,随后执行 formula.insert(["𝑥 + 1"]);命令返回成功,.uno:Formula 读回 X𝑥 + 1,落盘正文只剩 PREFI。现有公式测试仅覆盖 ASCII。修复方向:按实际插入范围选中文字,统一字符串长度与内核光标移动的计数单位,并验证正文及原式在补充平面字符和组合字符下完整保留。
apps/ely-doc/src/refs.rs:103 — [P1] 所有提示框统一设置 max_len(1000),公式编辑预填时静默截断已有原式,违反 DOC-10 和出错即暴露规则。临时副本中先通过内核插入 "x + ".repeat(300) + "1"(1201 字符),选中公式调用 on_formula;内核原式完整,编辑框实际只剩前 1000 字符,末尾的 1 已丢失。用户直接点击 Apply 会以截断值替换原公式。修复方向:完整保留已加载公式的预填内容;任何长度限制均在提交前明确校验,加入超过 1000 字符的预填与保存回归。
patches/libreoffice/0008-lok-toc-caption-formula-without-dialogs.patch:238 — [P2] 修改选中公式先删除整个对象,再以默认属性创建新对象,导致原有锚点和布局属性丢失,破坏 DOC-10 的公式修改及对象定位。实测:插入 a over b,执行 image.anchor_page,落盘有 text:anchor-type="page" 和 text:anchor-page-number="1";保持该公式选中,修改为 c over d 后保存,锚点变成 text:anchor-type="as-char",页锚点消失,公式回到正文流中。现有回归只检查对象数量和公式文字。修复方向:在选中公式的嵌入对象上更新原式,保留框架、锚点及布局属性,并验证一次撤销恢复原式和对象属性。
crates/ely-lok/src/commands/refs.rs:47 — [P2] 题注对话框允许空正文提交(apps/ely-doc/src/refs.rs:246),命令表却将 Text 作为必填文本;可提交的编号题注操作必然失败,违反 DOC-09。实测:选中公式,以空题注提交,caption.insert(["Figure", ""]) 返回 caption.insert needs Text,对话框已经关闭,文档中没有题注。补丁中的题注入口支持空正文,现有测试只提交 ratio。修复方向:统一题注表单与命令参数的空正文约束,让编号题注的有效提交走通,并增加实际提交路径回归。
crates/ely-lok/src/review.rs:140 — [P2] 批注 HTML 转正文时同时把 <br/> 与其外层空段落的 </div> 计作换行,重复增加空行,审阅面板显示的正文偏离原批注(DOC-11)。实测:通过内核插入含 a\n\nNext 的批注,.uno:ViewAnnotations 给出 <div>a</div><div><br/></div><div>Next</div>;review::notes 返回 a\n\n\nNext。每个空段落都多出一次换行,当前单测仅覆盖连续非空段落。修复方向:按段落边界转换正文,正确处理空段落内的占位 br,并用内核实际返回的多段批注验证空行数量。