Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
6.6 KiB
FAIL
-
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~~, insertRulebetweenband the literal~: the result is~~ab~~\n\n---\n\n~~~cd~~. The last line becomes an opening code fence, so the visible~cddisappears. 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__. -
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.Paragraphon# --- ###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. -
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.TaskListon1.\n [x] aproduces- [ ] \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. -
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.Quoteon- > [!NOTE]\n aproduces- a, turning the original paragraph into indented code. With an enclosing quote,> > [!NOTE]\n> abecomes> > 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. -
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.Quoteon- > [!NOTE]\n >\n >\n > awrites- \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. -
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 existingalertreader recognizes> [!NOTE] aas a NOTE whose body isa, butQuotedeletes 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. -
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.OrderedListon-\t\tcodeproduces1. \tcode, changing its child fromCode("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. -
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.TaskListon- awrites- [ ] 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. -
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. Inp\n> # h\nq, deleteh: the result isp\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. -
C:/Users/zhang/Documents/Github/Ely-GPUI-Components/src/documents/document/block/heading.rs:216— Literal closing hashes are protected only byto_heading, leaving other paths that create ATX boundaries destructive.Heading(3)onalpha #\n===writes### alpha #, whose visible text loses#. Likewise,split.rs:145turns# a # b, withRuleinserted 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. -
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. InsertRulebefore-ina - b: the output isa\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. -
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, andblock/split.rs:1and:69each contain eleven words. For example, “The byte to escape ifat's line would open a block.” is eleven. Shorten each to at most ten words while retaining its single-line form.