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

6.6 KiB

FAIL

  1. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/split.rs:102 — Reopening an inline format can turn its text into block syntax. In ~~ab~cd~~, insert Rule between b and the literal ~: the result is ~~ab~~\n\n---\n\n~~~cd~~. The last line becomes an opening code fence, so the visible ~cd disappears. The new seam copies delimiters without checking how they combine with neighboring text. Escape the newly adjacent literal delimiters, or refuse an unsafe split; verify that both fragments retain their text and formatting. The same issue changes which underscores are bold in __ab_cd__.

  2. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/heading.rs:91 — The paragraph-opener check includes closing heading hashes that the edit subsequently removes. Paragraph on # --- ### succeeds with ---, a thematic break; on # [x]: /u ### it produces a link definition and the displayed text disappears. Both original suffixes parse as prose while the closing hashes remain. Check the actual retained heading body, excluding closing syntax, before deciding whether to escape or refuse it. This leaves round-1 F9 incomplete.

  3. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/list.rs:193 — Checked-state preservation only handles a checkbox on the opener's physical line. TaskList on 1.\n [x] a produces - [ ] \n [x] a: markdown-rs changes the checked item to unchecked and makes [x] part of its text. Preserve the parsed item's checkbox even when its first paragraph starts on a continuation line, without adding a second box. This leaves round-1 F2 incomplete.

  4. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/quote.rs:77 — Unwrapping an alert with a lazy continuation concatenates that line's indentation with the retained outer opener. Quote on - > [!NOTE]\n a produces - a, turning the original paragraph into indented code. With an enclosing quote, > > [!NOTE]\n> a becomes > > a, retaining the quote that was meant to be removed. Transfer the surviving content after consuming its enclosing-container prefix and appropriate continuation indentation. The explicit-prefix regression test does not cover this branch.

  5. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/quote.rs:76 — Leading blank lines in an alert can still detach its body from the enclosing item. Quote on - > [!NOTE]\n >\n >\n > a writes - \n \n a; markdown-rs reads an empty list followed by a top-level paragraph. The splice only transfers the first following line, even when that line is blank. Preserve the item's membership when removing the marker and leading quote-only lines, or refuse the unrepresentable edit. This is another unhandled case of round-1 F3.

  6. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/quote.rs:79 — Alert removal assumes the decoded marker ends at a physical newline. The existing alert reader recognizes > [!NOTE]
a as a NOTE whose body is a, but Quote deletes the entire document because there is no following source line. Locate the marker's actual source extent using the same decoded interpretation, or refuse without editing; never remove the surviving body. The probe confirmed the reader's body before asserting the failed unwrap.

  7. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/list.rs:201 — Retyping still loses code indentation when marker whitespace contains tabs. OrderedList on -\t\tcode produces 1. \tcode, changing its child from Code("code") to a paragraph. Removing a whole tab also removes its excess columns, and the remaining tab reaches a different stop after the new marker. Preserve indentation in columns, including the unused part of a consumed tab, and account for the new marker width. The spaces-only F5 regression misses this case.

  8. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/list.rs:201 — Converting an item with first-line indented code to a task list reports success while discarding the code block. TaskList on - a writes - [ ] a, parsed as task paragraph text rather than code. Keeping the spaces does not preserve code after a GFM checkbox. Retain the original child block in a representable task-item structure, or explicitly refuse this conversion as the other task-first-line commands do; add a task-list case to the code-preservation regression.

  9. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/insert.rs:304 — Deletion's join check still counts container openers that the deletion removes. In p\n> # h\nq, delete h: the result is p\nq, merging two untouched paragraphs. joins_before(..., None) sees the quote opener on the deleted line and suppresses the separating blank. Determine adjacency from the surviving prefixes and blocks, excluding openers removed with the target. The root-level heading test passes, but round-1 F7 remains for nested blocks.

  10. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/heading.rs:216 — Literal closing hashes are protected only by to_heading, leaving other paths that create ATX boundaries destructive. Heading(3) on alpha #\n=== writes ### alpha #, whose visible text loses #. Likewise, split.rs:145 turns # a # b, with Rule inserted after the interior #, into # a #\n\n---\n\n# b, losing that literal hash. Apply the closing-hash protection whenever a heading line is created or shortened, and assert its parsed text. These leave round-1 F8 incomplete.

  11. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/split.rs:159 — Splitting a paragraph leaves newly active block openers unprotected in the surviving fragment. Insert Rule before - in a - b: the output is a\n\n---\n\n- b, so the original paragraph text becomes a list and its literal dash becomes syntax. The command should split the paragraph while retaining its content. Escape a fragment's newly active block syntax, or refuse if it cannot be represented safely, and test the resulting block kinds and text.

  12. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/heading.rs:89 — Four added comments exceed the explicit ten-word limit: this line, block/list.rs:173, and block/split.rs:1 and :69 each contain eleven words. For example, “The byte to escape if at's line would open a block.” is eleven. Shorten each to at most ten words while retaining its single-line form.