Files
ElyOffice/tasks/reviews/R4.2-r2.md
T

4.0 KiB
Raw Blame History

FAIL

  1. [P2] ../Ely-GPUI-Components/src/documents/tree/html.rs:119 — 字符引用扫描反复搜索整个剩余字符串,使新增短码处理退化为平方复杂度,即使文本没有短码。优化构建实测:连续 & 构成的 128 KiB 段落,仅 emoji 扫描就需约 260 ms;1 MiB 需 16.1 秒,而 markdown-rs 解析该 1 MiB 仅需约 230 ms。文档不超过 128 KiB 时走同步解析,已超过 PRD 的 100 ms 主线程阻塞上限。应按字符引用的合法字符及长度界限扫描,遇非法字符即停止,避免对每个 & 重扫后缀,并覆盖长文本的增长行为。数据见 .work/R4.2-r2/probes.log。

  2. [P2] ../Ely-GPUI-Components/src/documents/tree/html.rs:117 — HTML 属性复用了 CommonMark 字符引用规则,上一轮的普通 &amp; 案例已修复,但合法 HTML 地址仍会解错。<a href="https://x.test/?q=one&#38page=2">result</a> 的地址仍含 &#38page=2,应为 &page=2;<a href="/&#128;">result</a> 得到 /�,HTML 应为 /€。Typora 将属性交给 DOM 解析。应区分 HTML 属性与 Markdown 正文的解码规则,覆盖无分号数字引用及 HTML 的控制码映射;保留正文短码的转义语义。失败断言见 .work/R4.2-r2/confirmed-probes.log,独立 HTML5 解析结果见 html-oracle.log。

  3. [P2] ../Ely-GPUI-Components/src/documents/tree/html.rs:194 — 直接使用 emojis 的短码表,未覆盖 Typora 1.14.10 的默认名称和含义。实测 :blonde_man:、:person_with_blond_hair:、:person_with_pouting_face:、:person_frowning: 全部保持源码,Typora 分别输出 👱、👱、🙎、🙍;:cricket: 则由 Typora 的板球 🏏 变成昆虫 🦗。应对齐指定版本的短码映射,并对这些名称及含义建立回归断言。证据见 .work/R4.2-r2/confirmed-probes.log 与 typora-tokenizer.log,原表在 frame.js:22342 起。

  4. [P2] ../Ely-GPUI-Components/src/documents/tree/mod.rs:124 — HTML 关闭标签只能匹配当前 Markdown 容器内的打开标签,配合先解析 Markdown 的顺序,会忽略有效的 </u> 并让样式延伸至段落末尾。实测 a <u>*text</u> outside* end 显示为 a text outside end,text outside 被斜体化,连 end 都带下划线。Typora 的 underline 规则先匹配整对 <u>...</u>:应显示 a *text outside* end,仅 *text 带下划线。应按该规则处理标签与 Markdown 的解析优先级,确保关闭位置及字面标记正确,并加入交叉边界测试。两侧结果见 .work/R4.2-r2/confirmed-probes.log、typora-tokenizer.log。

  5. [P2] ../Ely-GPUI-Components/src/documents/tree/html.rs:85 — 无引号属性值以所有 Unicode 空白为分隔符,会截断 HTML 允许出现在值内的字符。在 /a 与 b 之间放实际的 U+00A0:See <a href=/a b>result</a>.,实测链接目标只剩 /a;Typora 的标签规则和 HTML5 解析均保留完整 /a b。应按 HTML 的 ASCII 空白规则读取、跳过属性分隔符,保留其余 Unicode 字符,并断言完整地址。证据见 .work/R4.2-r2/confirmed-probes.log、html-oracle.log。

  6. [P2] ../Ely-GPUI-Components/src/documents/tree/mod.rs:114 — br 的开始和关闭标签都无条件追加换行。实测 before<br></br>after 变成两次换行,多出空行;Typora 的 br 规则将 <br></br> 合成一个换行词元。应按该规则处理紧随的关闭标签,避免重复换行,并补配对写法的回归测试。失败断言及原分词结果见 .work/R4.2-r2/confirmed-probes.log、typora-tokenizer.log。

清理例外:自动审批审查拒绝了已校验路径的 PowerShell 删除命令,仅返回 blocked by policy。已通过 cargo clean 删除两个独立构建目录;仍留有项目内 .work/R4.2-r2/source/、parser/、html-oracle/、tmp/、source.tar、typora-tokenizer.cjs。本轮完整库测试 1878 项通过,原生及 WebAssembly Clippy、格式检查通过;上一轮原始失败断言全部通过,记录在 .work/R4.2-r2/validation.log。