Skip to content

🤖 fix: preserve JSX-like tags in markdown#3256

Open
coadler wants to merge 1 commit intomainfrom
fix-preserve-jsx-markdown-tags
Open

🤖 fix: preserve JSX-like tags in markdown#3256
coadler wants to merge 1 commit intomainfrom
fix-preserve-jsx-markdown-tags

Conversation

@coadler
Copy link
Copy Markdown
Collaborator

@coadler coadler commented May 8, 2026

Summary

Preserves JSX-like component names in chat markdown so pasted errors like <SignOutButton/> remain visible in message history instead of being parsed as unknown HTML and stripped by sanitization.

Background

Markdown rendering intentionally supports sanitized raw HTML for cases like collapsible <details> blocks. That same raw HTML path caused copied React/JSX component names in error text to be parsed as HTML elements and removed by rehype-sanitize.

Implementation

Adds a pre-rehypeRaw plugin that converts raw HTML containing tags outside the sanitize allowlist into text. Allowed sanitized HTML still flows through rehypeRaw, rehype-sanitize, and rehype-harden unchanged.

Validation

  • bun test src/browser/features/Messages/MarkdownRenderer.raw-html.test.tsx
  • bun test src/browser/features/Messages/InlineSkillMarkdown.test.tsx src/browser/features/Messages/TypewriterMarkdown.test.tsx src/browser/features/Messages/MarkdownComponents.test.tsx
  • bun x eslint --max-warnings 0 src/browser/features/Messages/MarkdownCore.tsx src/browser/features/Messages/MarkdownRenderer.raw-html.test.tsx
  • bun x prettier --check src/browser/features/Messages/MarkdownCore.tsx src/browser/features/Messages/MarkdownRenderer.raw-html.test.tsx
  • nix shell nixpkgs#shfmt nixpkgs#hadolint -c make static-check

Risks

Low. The change is limited to raw HTML markdown nodes before sanitization. Unknown tags become escaped text, while supported sanitized HTML remains available.


Generated with mux • Model: openai:gpt-5.5 • Thinking: xhigh • Cost: 2394133{MUX_COSTS_USD:-0.00}

@coadler
Copy link
Copy Markdown
Collaborator Author

coadler commented May 8, 2026

@codex review

@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Breezy!

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Keep pasted component names visible in chat history by treating unknown raw HTML as literal text before rehype parses and sanitizes markdown content. Supported sanitized HTML, such as details/summary blocks, still renders normally.

---

_Generated with `mux` • Model: `openai:gpt-5.5` • Thinking: `xhigh` • Cost: `2393140{MUX_COSTS_USD:-0.00}`_

<!-- mux-attribution: model=openai:gpt-5.5 thinking=xhigh costs=0.00 -->

Co-authored-by: Mux <noreply@coder.com>
@coadler coadler force-pushed the fix-preserve-jsx-markdown-tags branch from 2417c04 to 39efa44 Compare May 8, 2026 22:19
@coadler
Copy link
Copy Markdown
Collaborator Author

coadler commented May 8, 2026

@codex review

@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant