fix: clean surviving paragraph after deleteContentRange in replaceDocumentWithMarkdown#76
Merged
a-bonus merged 1 commit intoa-bonus:mainfrom Feb 25, 2026
Conversation
…umentWithMarkdown When replaceDocumentWithMarkdown deletes existing content, the Google Docs API always leaves one trailing paragraph that cannot be removed. If that paragraph has bullet list membership or text formatting from the old content, all subsequently inserted text inherits those properties, corrupting the new document (e.g., every paragraph becomes a bullet list item). After the delete, re-read the document to locate the survivor, then strip its bullet membership (deleteParagraphBullets) and reset text styles before inserting the new markdown content.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
replaceDocumentWithMarkdowncorrupts new content when the document being replaced contains bullet lists or text formatting. Every paragraph in the new document inherits bullet membership and/or text styles from the old content.deleteContentRangealways leaves one trailing paragraph that cannot be deleted. If that survivor has bullet list membership or text formatting, all subsequently inserted text inherits those properties.deleteParagraphBullets) and reset text styles (updateTextStyle) before inserting the new markdown.Reproduction
replaceDocumentWithMarkdownwith plain markdown (no bullets)"bullet": {"listId": "kix.list.X"}Test plan
npm run test)createParagraphBullets), ranreplaceDocumentWithMarkdown, verified result: 61 intentional bullet paragraphs, 62 normal paragraphs, zero inherited corruptionnpm run buildcompiles cleanly