R4.2: inline extensions read as GitHub shows them (component 9f39d32); three rounds used, last fixes tested

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-10-13 22:49:32 -04:00
1 parent c4cb075ce3
commit c3f6684a46
4 files changed
+16 -3

No files matched your search

+1 -1
View File
@@ -233,7 +233,7 @@
- [x] R4.0 前置:`scripts/review.sh` 与本文件头改用 gpt-6-astra(effort max,fast);PRD §14 与 `agents.md` 记下四项决定与 Typora 对照的范围;`TyporaRef` 不入库 — R1 PASS
- [~] R4.1 组件库:菜单的图标按钮行(`Menu` 一行若干图标按钮,各带名称与快捷键提示、可禁用);键盘可达;选中即运行并关菜单;画廊有例,有测试 — R1 FAIL 三项已修:所标按钮被禁用或移走时改选了别的按钮;带筛选框的菜单左右键被文本框吞掉;禁用按钮不说明不可用。R2 FAIL 两项已修:菜单关后的指针移动越界崩溃;移走中间按钮后右邻顶替被执行(标记认项不认位)。R3 FAIL 两项已修(三轮用尽,未再审):按钮无无障碍的点按动作;方向键所标按钮不进无障碍树(按钮报选中并作活动后代,面板为菜单角色);各有回归测试。组件库 1b8d678 已推送;`check.sh` 的 GPUI Kit 一步(Kit 0.7.3 要 gpui-pre 0.3.9)与五处未动文件的 raw px 早于本条
- [ ] R4.2 组件库:行内扩展照 Typora 默认:`:shortcode:` 表情;行内 HTML 的 `u`、`b`/`strong`、`i`/`em`、`s`/`del`/`strike`、`code`、`kbd`、`mark`、`br`、`a` 按其义显示,其余标签只显示文字;脚注引用为上标数字;`~x~` 仍为删除线
- [~] R4.2 组件库:行内扩展照 Typora 默认:`:shortcode:` 表情;行内 HTML 的 `u`、`b`/`strong`、`i`/`em`、`s`/`del`/`strike`、`code`、`kbd`、`mark`、`br`、`a` 按其义显示,其余标签只显示文字;脚注引用为上标数字;`~x~` 仍为删除线 — R1 FAIL 六项已修:表情吞掉转义与自动链接;连字符名当成已支持标签;属性值未解码字符引用;无引号值的斜杠被删;非 a 标签读 href;两条注释超长。R2 FAIL 六项已修:引用扫描为平方复杂度;属性值改照 HTML5 解码;表情名照 GitHub 现行 gemoji(用户定 GitHub 优先);关闭标签跨不出 Markdown 容器;无引号值只按 ASCII 空白分隔;`</br>` 照 HTML5 换行。R3 FAIL 五项已修(三轮用尽,未再审):Markdown 容器即 GitHub 写出的元素(em、strong、del、a),与标签同栈照 HTML5 修复:关闭标签结束同名元素并弹出其上各元素,只有格式元素重开,`mark`、`kbd`、`del` 止于浏览器止处,新的 `a` 先结束已开的 `a`;表情在解码后的正文里认(`\:smile:`、`&#58;smile:` 照 GitHub 为表情,用户定 GitHub 优先,推翻 R1 第一项的转义部分),自动链接与 `<code>` 里不认(GitHub Markdown API 实测);各有回归测试,旧代码上失败。组件库 9f39d32 已推送
- [ ] R4.3 组件库:块扩展照 Typora 默认:GitHub 提示块(NOTE、TIP、IMPORTANT、WARNING、CAUTION);独占一段的 `[toc]` 画成可按的标题目录;front matter 去掉 `---` 显示在框里;HTML 块按 R4.2 的标签显示,`script`、`style` 不显示;分隔线可见;嵌套无序列表的标记随层级变化
- [ ] R4.4 ElyMark:导出 HTML、纯文本与富文本复制随 R4.2、R4.3,与可视所见一致(表情、提示块、目录、行内 HTML 的同一组标签)
- [ ] R4.5 组件库:可视模式按下块时插入点落在所按的字处;右键不开块,把插入点放到所点处,以事件告知属主所点的目标(块的种类、链接地址、图片地址、是否在表格或代码块里)
+13
View File
@@ -0,0 +1,13 @@
FAIL
1. [P2] `../Ely-GPUI-Components/src/documents/tree/mod.rs:125` — HTML 关闭标签只匹配 `tag: Some(...)`,认不到 Markdown 生成的元素,仍不符合本轮明确采用的浏览器修复语义。`a *inside</em> outside* end` 实测将 `inside outside` 全部设为斜体(`2..16`);CommonMark 输出经 HTML5 解析后只有 `inside` 是斜体(`2..8`)。`**inside</strong> outside**` 同样错误。应让原始关闭标签也能结束 Markdown 生成的同名元素,并正确处理随后到来的 Markdown 结束事件;补这两种交叉测试。失败断言在 `.work/R4.2-r3/confirmed-probes.log`,独立解析结果在 `html-oracle.log`;规则见 [HTML5 树构造](https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inbody)。
2. [P2] `../Ely-GPUI-Components/src/documents/tree/mod.rs:372` — 退出 Markdown 容器时无区别地保留全部 HTML 标签,把浏览器不会重建的 `mark`、`kbd`、`del` 也延续到了容器外。`a **bold <mark>marked** outside</mark> end` 实测连 `outside` 都被高亮;浏览器在 `</strong>` 处关闭 `mark`,`outside` 应无高亮。换成 `kbd` 或 `del`,代码底色或删除线也错误延伸。应区分 HTML5 的活动格式元素与普通元素,按实际关闭与重建规则计算范围;补不同类别标签的交叉测试。`mark`、`kbd` 的失败断言及 `del` 的独立对照见 `.work/R4.2-r3/confirmed-probes.log`、`html-oracle.log`;规则见 [HTML5 活动格式元素](https://html.spec.whatwg.org/multipage/parsing.html#the-list-of-active-formatting-elements)。
3. [P2] `../Ely-GPUI-Components/src/documents/tree/mod.rs:139` — 新的 `<a>` 直接入栈,没有按 HTML5 结束已打开的锚点,产生重叠链接并让后文仍可点击。`[one <a href='/inner'>two</a> three](/outer)` 实测外链范围为 `0..13`,内链为 `4..7`;浏览器及 GitHub 实际输出仅让 `one ` 链到 `/outer`(`0..4`)、`two` 链到 `/inner`,` three` 不属于链接。应在新锚点开始时关闭已有锚点,包括 Markdown 链接,并断言完整链接范围与目标。失败及两套对照在 `.work/R4.2-r3/confirmed-probes.log`、`html-oracle.log`、`github-oracle.log`;规则见 [HTML5 锚点处理](https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inbody)。
4. [P2] `../Ely-GPUI-Components/src/documents/tree/mod.rs:310` — 表情替换只避开自动链接和 Markdown 代码节点,未避开 HTML `code` 内的文字。`a <code>:smile:</code> b` 实测显示 `a 😄 b`;GitHub 官方 Markdown API 的实际结果保留代码中的 `:smile:`。应根据当前 HTML `code` 上下文保留代码文字,覆盖代码内与代码外同一短码的测试;不能仅按共用的 `Style::Code` 判断,因为 `kbd` 内仍应转换。失败断言与 [GitHub Markdown API](https://docs.github.com/en/rest/markdown/markdown?apiVersion=2022-11-28) 的原始响应在 `.work/R4.2-r3/confirmed-probes.log`、`github-oracle.log`。
5. [P2] `../Ely-GPUI-Components/src/documents/tree/html.rs:215` — 仍用源码是否字面写出短码来决定转换,与最新「读法不同随 GitHub」决定冲突。`Show \:smile: now.`、`Show &#58;smile: now.`、`Show :sm&#105;le: now.` 在当前实现中保留 `:smile:`;GitHub 官方 Markdown API(`mode=gfm`)将三种写法都显示为 😄。现有转义测试反而固定了旧的 Typora 行为。应按当前决定对解码后的普通正文识别短码,保留代码等实际上下文的排除规则,并调整对应回归断言。失败及 [GitHub Markdown API](https://docs.github.com/en/rest/markdown/markdown?apiVersion=2022-11-28) 原始响应见 `.work/R4.2-r3/confirmed-probes.log`、`github-oracle.log`。
清理例外:自动审批审查拒绝了 PowerShell 删除暂存副本的命令,仅返回 `blocked by policy`。已用 Cargo 定向清理两个独立构建目录,共释放约 5.3 GiB;仍留有项目内 `.work/R4.2-r3/source/`、`parser/`、`html-oracle/`、`tmp/`、`source.tar`。完整库测试 1882 项、原生与 WebAssembly Clippy、格式及画廊元数据检查通过;上一轮六项的逐项核验与本轮证据在 `.work/R4.2-r3/validation.log`。