Files
ElyOffice/tasks/reviews/R4.3-r1.md
T

16 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
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
- `../Ely-GPUI-Components/src/documents/tree/blocks.rs:74` — [P2] Alert 按未解析的源码首行识别,与 GitHub 不同。`> \[!NOTE]\n> body`、`> [!NOTE]\n> body` 在 GitHub Markdown API(POST `/markdown`,`mode=gfm`)都是 Note,本实现却显示普通引用;定义 `[!NOTE]: https://example.com` 后的 `> [!NOTE]\n> body` 在 GitHub 是引用链接,本实现反而吞掉链接并生成 Note。另有标记后的 NBSP 被 `trim()` 错误接受,纯 CR 换行的合法提示块被拒绝。应按解析后的节点、GitHub 的空白和换行规则判定并移除标记,补这些正反例。API 记录见 `.work/R4.3-r1-review/github-alerts-isolated.log`、`github-alerts.log`;五个对应 Rust 探针均失败,见 `probes.log`。
- `../Ely-GPUI-Components/src/documents/tree/blocks.rs:120` — [P2] script/style 的结束位置只匹配名称前缀,隐藏范围会提前结束。`<div>before<script>hidden</scriptx>also hidden</script>after</div>` 实际显示 `beforealso hiddenafter`;style 遇到 `</style-extra>` 同样泄出其内容,违反 R4.3 的“不显示”。应匹配完整的、大小写不敏感的结束标签及合法名称边界,不能把前缀相同的字符串当成结束标签;补 script 和 style 的回归测试。两个探针均失败,见 `probes.log`。
- `../Ely-GPUI-Components/src/documents/tree/blocks.rs:94` — [P2] 隐藏 script/style 的状态只活在一个 mdast HTML 节点里,遇空行便丢失。输入 `<div>\n<script>\nfirst\n\nsecond\n</script>\n</div>` 时,markdown-rs 在空行处分开节点,本实现把仍在 script 内的 `second` 渲染为正文;探针实际得到 `Paragraph("second ")`。应让隐藏范围跨越这些节点,直到真正的结束标签,再恢复普通 Markdown 的处理;为含空行的 script/style 补回归测试。证据见 `probes.log`。
- `../Ely-GPUI-Components/src/documents/tree/blocks.rs:124` — [P2] HTML 块元素仅被当作换行,没有参与元素栈的关闭,格式因此越出容器。`<div><mark>x</div>y` 被解析为整段 `x\ny` 都带 Mark;GitHub API 输出为 `<div><mark>x</mark></div>y`,只有 `x` 带标记,kbd 也有同样的边界。应在关闭块元素时按 HTML 的栈规则结束其内部元素,仅重开规则允许重开的格式元素,并覆盖这些跨容器用例。API 记录见 `github-blocks.log`,失败的样式范围断言见 `probes.log`。
- `../Ely-GPUI-Components/src/documents/document/place.rs:198` — [P2] 目录保存旧解析结果的字节位置,跳转却直接在当前编辑器文本中解释它。以 Split 模式打开 `[toc]\n\n# A\n\ntext\n\n## B\n`,在源码开头插入 20 行 `inserted`,等待解析期间点击仍显示的 B:实际插入点落到第 3 行,目标 B 已在第 27 行。现有普通块打开路径会检查解析是否对应当前文本,这条新路径没有。应将目录目标与产生它的文本修订绑定,在提交编辑或解析更新后重新定位目标,不能直接沿用旧字节位置。GPUI 点击探针稳定失败,见 `toc-probes.log`。
- `../Ely-GPUI-Components/src/documents/tree/blocks.rs:120` — [P2] HTML 扫描会反复处理已经检查过的数据,复杂度为平方。每个 script/style 都对全部剩余文本调用 `to_ascii_lowercase()`;此外 `words()` 在每个标签前调用 `in_code()`,会重复遍历不断增长的元素栈。直接引用本提交解析代码的发行优化探针中,重复闭合 script 的 272,011 字节耗时约 75 ms,1,088,011 字节约 1.25 s,2,040,011 字节约 4.58 s;40,000 个 `<b>` 组成的 120,005 字节输入约 336 ms,仍落在文档主线程即时解析的 128 KiB 范围内。当前“线性时间”测试没有覆盖这两条路径。应只扫描未消费的字节,并避免反复搜索整个已开元素栈;补重复闭合标签和大量已开格式标签的增长测试。证据见 `release-parser-final.log`,探针源码见 `parser-main-source.log`。
清理残留:WSL 的审查源码副本、独立解析探针及两个目标目录均已删除。`.work/R4.3-r1-review/misdirected-target` 仍留有约 1.4 GB 构建产物;它是本次被 WSL 提前展开路径变量而误建到项目上一级、随后移回项目内的目标目录。自动审批两次拒绝清理,只返回 `blocked by policy`。项目上一级已无本次创建的目录;没有操作共享的 `tasks/reviews/.pane`。除该残留外,本次 `.work/` 仅保留小日志。