From 47591a34105a21bcd6b95ee7971ccb31ef2ae701 Mon Sep 17 00:00:00 2001 From: marshall Date: Fri, 6 Nov 2026 23:34:42 -0800 Subject: [PATCH] fix(shared): keep block markers after a task checkbox as visible text Co-Authored-By: Claude Opus 5.5 --- packages/shared/src/document-anchors.test.ts | 2 ++ packages/shared/src/document-anchors.ts | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/shared/src/document-anchors.test.ts b/packages/shared/src/document-anchors.test.ts index 3b7f5cb246..1c43a24295 100644 --- a/packages/shared/src/document-anchors.test.ts +++ b/packages/shared/src/document-anchors.test.ts @@ -99,6 +99,8 @@ describe("document text projection", () => { it("keeps text the renderer shows literally", () => { expect(projectMarkdownToText("# - Roadmap").text).toBe("- Roadmap"); expect(projectMarkdownToText("> # - Quoted heading").text).toBe("- Quoted heading"); + expect(projectMarkdownToText("- [ ] # Release").text).toBe("# Release"); + expect(projectMarkdownToText("- [x] - Shipped").text).toBe("- Shipped"); expect(projectMarkdownToText("Intro\n\n| --- |").text).toBe("Intro ---"); expect(projectMarkdownToText("| A | B |\n| --- | --- |\n| 1 | 2 |").text).not.toContain("---"); expect(projectMarkdownToText("Show \\& and &Amp; and &constructor;").text) diff --git a/packages/shared/src/document-anchors.ts b/packages/shared/src/document-anchors.ts index a7336b2757..e0072cddec 100644 --- a/packages/shared/src/document-anchors.ts +++ b/packages/shared/src/document-anchors.ts @@ -275,9 +275,11 @@ function stripBlockSyntax(line: string, absoluteOffset: number): { text: string; consumed += quote[0].length; continue; } - const listItem = rest.match(/^\s*(?:[-+*]|\d+[.)])\s+(?:\[[ xX]\]\s+)?/); + const listItem = rest.match(/^\s*(?:[-+*]|\d+[.)])\s+(\[[ xX]\]\s+)?/); if (listItem) { consumed += listItem[0].length; + // A task checkbox starts the item's paragraph, so markers after it stay visible. + if (listItem[1]) break; continue; } // Heading text is inline content, so markers after `#` stay visible.