diff --git a/ui/src/components/MarkdownEditor.test.tsx b/ui/src/components/MarkdownEditor.test.tsx
index 976ad51c561..4d46cc3aa37 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",
@@ -251,7 +251,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 64dfba357e4..2ccdb85278c 100644
--- a/ui/src/components/MarkdownEditor.tsx
+++ b/ui/src/components/MarkdownEditor.tsx
@@ -1082,6 +1082,7 @@ export const MarkdownEditor = forwardRef
{