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

16 lines
4.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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`。