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

16 lines
6.0 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
crates/ely-pdf-engine/shim/ely_write.c:349:预览与缺字失败会清除重做分支。复现:把 “Hello world” 改成 “Hi world”,撤销,再调用 put_text(..., scale=2) 预览并取消,或尝试用 Helvetica 写入“你好”;两种情况随后 undo(..., redo=true) 都返回 “nothing to redo”。单独读取 text_blocks 后重做正常。pdf_begin_operation 后的实际内容/资源改写截断 journal,pdf_abandon_operation 仅回滚当前改写,原重做分支已经丢失;清资源缓存也无法恢复它。违反 §11.1 的统一撤销规则及预览/失败保留原状态的契约。修复方向:预览在独立文档副本执行,正式改写前完成字形和字体校验,并保证失败事务保留已有 journal 分支。实测证据:/tmp/ely-c113-r1/crates/ely-pdf-engine/tests/review_probe.rs 中 preview_preserves_redo_history、missing_font_preserves_redo_history 均失败,block_read_alone_keeps_redo 通过;日志 /tmp/ely-c113-r1-engine-probes.log。
crates/ely-pdf-engine/shim/ely_write.c:320;apps/ely-pdf/src/writes.rs:96:字号增大越出原框时会直接提交,跳过用户预览确认。复现:选中样本中的 18pt “Hello world / Second line”,保持“文档自带字体”,把文字改为 “Hi”、字号设为 72pt 后应用。字号扩大四倍,worker 仍给 grew=false,应用实际得到 edited=1、preview=false。判定只比较行数和新框宽,遗漏字号、垂直边界及原文字实际边界的变化,违反 §11.3“替换可能改变布局时提供预览”。修复方向:根据原/新排版的实际区域和字号等布局属性决定确认,确认前保持文档原样;补充同字体、行数减少但字形变大的回归。实测证据:enlarged_single_line_requires_preview、review_enlarging_glyphs_waits_for_confirmation 失败;副本修复判定后分别通过,日志 /tmp/ely-c113-r1-engine-probes.log、/tmp/ely-c113-r1-app-probes.log、/tmp/ely-c113-r1-repair-app.log。
crates/ely-pdf-engine/shim/ely_text.c:249:直接用前两个 stext line 的基线差作为行距,允许行距为零,导致新文字各行重叠。复现:有效 PDF 内容为 “BT /F1 18 Tf 1 0 0 1 72 720 Tm (Hello) Tj 1 0 0 1 160 720 Tm (world) Tj ET”;MuPDF 将其识别为一个 editable=true、text="Hello\nworld" 的块,两段基线相同。把块改为 “One two three four five”、框宽设为 50pt,写入成功,但全部 19 个字符顶部都为 52.65,各个折行叠在同一位置。违反 PDF-03 的文本框局部重排契约。修复方向:区分同一基线上的片段与纵向行,依据有效纵向间隔或单行排版规则生成正行距;补充同基线多片段的渲染/字符位置回归。实测证据:wrapped_text_uses_distinct_baselines 失败;副本修复后字符顶部变为 52.65、74.24998、95.85001 等并通过,日志 /tmp/ely-c113-r1-engine-probes.log、/tmp/ely-c113-r1-repair-engine.log。
apps/ely-pdf/src/writes.rs:153:图片选择器返回后重新取 active_view,将发起文档的页号和对象序号用于另一份文档;添加图片在 :167、:175 同样重新取活动文档和当前页。复现:在 A 选中图片并发起 Replace Image,选择器待返回期间打开 B,随后确认一张方形图片。真实 worker 修改了 B,A/B 的编辑计数为 (0, 1),A 原对象保留。违反 PDF-04 与 §11.1 的统一文档选择/状态规则。修复方向:打开选择器时绑定发起标签、文档版本、页及对象身份,回调核验后只修改该目标;添加图片也绑定发起页。实测证据:review_replace_image_stays_with_initiating_tab 失败;副本绑定发起视图并核验版本后计数为 (1, 0),日志 /tmp/ely-c113-r1-app-probes.log、/tmp/ely-c113-r1-repair-app.log。
apps/ely-pdf/src/content.rs:96:图层读取的清理回调会被 PdfView::read 的版本守卫整体丢弃,reading_layer 永久保留 true,后续每页的对象与文字读取都被阻止。复现:打开两页 PDF,在阅读模式排入真实页面旋转,立即切到编辑工具并请求第一页图层。旋转完成使 version 增加,旧读取回调被丢弃;继续刷新 100 轮后 reading_layer=true、layers 中仍无第一页,无法点选编辑,重新切换工具也保留该状态。修复方向:异步完成时总是清理该请求的读取状态,再按版本决定接纳数据;旧结果清理后允许当前版本重读。实测证据:review_layer_read_recovers_after_overlapping_edit 使用真实 worker 和工具切换失败;副本将清理移到版本判定前后得到 (false, true) 并通过,日志 /tmp/ely-c113-r1-layer-probe.log、/tmp/ely-c113-r1-repair-app.log。
apps/ely-pdf/src/writes.rs:24;apps/ely-pdf/src/view.rs:249:Esc 绑定仅覆盖页面视图的 PdfEditing 上下文,右侧编辑面板是页面视图的兄弟元素;在文本输入框获得焦点后,Esc 无法退出工具。复现:开启编辑、点选文字块、聚焦右侧 TextInput,再发送真实键盘 escape,tool 仍为 Edit;现有 escape_leaves_the_edit_tool 只聚焦页面视图。违背 agents.md:174 的“Esc 退出”和 C11.3 的已验证声明。修复方向:使编辑快捷键上下文覆盖页面与编辑面板,并验证字段焦点下的退出行为。实测证据:review_escape_leaves_tool_from_text_field 失败;副本将上下文放到共同窗口根后得到 Read 并通过,日志 /tmp/ely-c113-r1-escape-probe.log、/tmp/ely-c113-r1-repair-app.log。
crates/ely-pdf-engine/shim/ely_write.c:294、:330;crates/ely-pdf-engine/shim/ely_place.c:239;crates/ely-pdf-engine/shim/ely_shim.h:18:新增注释违反 agents.md 的“一行、十词以内”。:294 与 ely_shim.h:18 均为 11 词;ely_write.c:330 为两行 21 词,ely_place.c:239 为两行 20 词。运行 python3 tests/scripts/comments.py 即以 FAIL 退出并报告 ely_write.c:294;独立 C 注释扫描另确认其余三处。修复方向:将这些注释压缩到单行十词以内,补充检查器对多行 C 注释和 .h 文件的覆盖。