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

4.8 KiB

FAIL

  1. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/check.rs:59 — The reread comparison discards all whitespace, including literal whitespace inside code. Heading(3) on a `x\n y`‸\n=== succeeds, changing the inline-code value from x\n y to x y. The real MarkdownReader comparison also fails: this changes the code while merely changing the heading level. Preserve significant whitespace when joining the heading, or refuse as Misread; the verification must compare it instead of filtering it out.

  2. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/check.rs:38 — The signature compares raw mdast nodes rather than the text and formats the component displays. Inserting Rule at <u>ab‸cd</u> succeeds with <u>ab\n\n---\n\ncd</u>, but MarkdownReader now renders cd without underline. Changing the first line of <u>a‸\nb</u> to a heading has the same loss. Likewise, splitting x:smile: ‸:smile: changes the second literal shortcode into an emoji. Verify the fragments through the same reader used for display, preserving its text and inline formats, or refuse the unsafe edit.

  3. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/quote.rs:93 — Alert unwrapping strips the surviving body's significant indentation. Quote with the caret in code in > [!NOTE]\n>\n> code succeeds with code, changing the alert's indented code block into a paragraph. An indented fenced block also changes its code value because only its opening line loses the indentation. Preserve the body's indentation relative to the removed quote, consistently across its lines, or refuse if its block kind and code value cannot survive.

  4. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/list.rs:214 — Retyping identifies a fence from the code's literal contents after discarding its indentation. OrderedList on - ```lang‸ writes 1. ```lang: the original code value, three backticks followed by lang, becomes an empty fenced code block with language lang. Determine whether the original block is fenced from its source structure and indentation, not whether its content starts with backticks or tildes; retain the parsed code value.

  5. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/list.rs:220 — Code padding counts every Unicode whitespace character's UTF-8 bytes as indentation, then leaves that character in the source as well. For - followed by five ASCII spaces, U+00A0, and code, OrderedList adds two ASCII spaces to the parsed code value: \u{00A0}code becomes \u{00A0}code. Count actual indentation in columns and preserve non-ASCII whitespace as code content; do not duplicate its byte length as spaces.

  6. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/list.rs:205 — Removing a task checkbox can activate block syntax in the retained paragraph. BulletList on - [x] --- succeeds with - ---, which parses as a thematic break: both the list and its displayed text disappear. - [x] # h similarly becomes a heading inside the item. Escape the newly active opener or refuse the conversion, and verify that removing the checkbox preserves the child's text and block kind. List retyping does not preserve these by construction.

  7. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/list.rs:149 — The continuation-line checkbox fix covers retyping but not unwrapping. TaskList on -\n [x] a toggles the task list off and produces [x] a, making the former checkbox literal paragraph text; the equivalent same-line task unwraps to a. Remove the parsed checkbox on its own physical line when unwrapping, as well as the list opener and continuation indentation.

  8. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/heading.rs:71 — The new guard requires a parsed paragraph node even when the valid result is an empty paragraph. Paragraph on # ‸ now returns EditRefusal::Misread instead of removing the heading marks. Empty paragraphs have no mdast node, so block_at necessarily returns None. Recognize this valid empty result while continuing to reject results that actually reinterpret retained content.

  9. C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/quote.rs:75 — The same-line alert guard rejects safely removable markers that the existing alert reader decodes. > \[!NOTE]\n> a is recognized as an alert with body a, but Quote now returns Misread because the raw marker does not start with [!. Its marker occupies a physical line of its own; the decoded-newline refusal does not apply. Identify the marker using the reader's decoded interpretation and distinguish a marker-only line from a line that also contains body text.