diff --git a/ui/src/components/MarkdownEditor.test.tsx b/ui/src/components/MarkdownEditor.test.tsx
index 8aa1b5d2838..c0d6c199ca4 100644
--- a/ui/src/components/MarkdownEditor.test.tsx
+++ b/ui/src/components/MarkdownEditor.test.tsx
@@ -63,7 +63,7 @@ vi.mock("@mdxeditor/editor", async () => {
}), []);
React.useEffect(() => {
- if (!suppressHtmlProcessing && markdown.includes("
"))) {
setContent("");
onError?.({
error: "Error parsing markdown: HTML-like formatting requires suppressHtmlProcessing",
@@ -262,7 +262,7 @@ describe("MarkdownEditor", () => {
await flush();
expect(mdxEditorMockState.markdownValues.at(-1)).toContain("");
expect(mdxEditorMockState.markdownValues.at(-1)).not.toContain("
{
});
});
+ it("keeps LLM wrapper tags in the rich editor instead of falling back to raw source", async () => {
+ const root = createRoot(container);
+
+ await act(async () => {
+ root.render(
+ \n## My take\n\nBenchmark notes\n"}
+ onChange={() => {}}
+ placeholder="Markdown body"
+ />,
+ );
+ });
+
+ await flush();
+ expect(mdxEditorMockState.suppressHtmlProcessingValues).toContain(true);
+ expect(container.querySelector("textarea")).toBeNull();
+ expect(container.textContent).toContain("Benchmark notes");
+ expect(container.textContent).not.toContain("Rich editor unavailable for this markdown");
+
+ await act(async () => {
+ root.unmount();
+ });
+ });
+
it("falls back to a raw textarea when the rich parser rejects the markdown", async () => {
mdxEditorMockState.emitMountParseError = true;
const handleChange = vi.fn();
diff --git a/ui/src/components/MarkdownEditor.tsx b/ui/src/components/MarkdownEditor.tsx
index 888a41a8977..4c604eee450 100644
--- a/ui/src/components/MarkdownEditor.tsx
+++ b/ui/src/components/MarkdownEditor.tsx
@@ -1084,6 +1084,7 @@ export const MarkdownEditor = forwardRef
{