Block Editor: trademark/copyright/registered symbols (emoji nodes) silently disappear on render — no error, no fallback
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 970
- Forks
- 486
- Avg merge
- 3d 33m
- Merged PRs (30d)
- 170
Description
Problem Statement
Typing or pasting ®, ™, or © directly into a Block Editor field causes the character to be auto-converted into a distinct emoji node type (e.g. {"type":"emoji","attrs":{"name":"tm"}}) rather than being stored as plain text. This node type has no corresponding handler in the JSON→HTML/Markdown rendering pipeline, so the character is silently dropped from all rendered output with no error or placeholder.
Steps to Reproduce
https://drive.google.com/file/d/1Etsm3iofUXTWkP8dmyTPrqlDDJbatgxv/view
- Create or edit any contentlet with a Block Editor field.
- Type or paste a ®, ™, or © character directly into the text.
- Save the contentlet.
- Fetch the content via Content API or Page API, or view the rendered page.
Root cause:
TiptapHtml.java and TiptapMarkdown.java (JSON→HTML and JSON→Markdown converters) both have explicit switch/case statements for known node types (paragraph, heading, blockquote, bulletList, orderedList, pre, hr, table) but neither has a case for "emoji". A full-repo search for "emoji" found no other rendering-related handling. Since the data itself is confirmed intact through save, Content API, and Page API, the loss is isolated entirely to this conversion step.
Acceptance Criteria
The emoji should render on frontend as it is.
dotCMS Version
26.07.06-3
Severity
Medium - Some functionality impacted
Links
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with TiptapHtml.java and TiptapMarkdown.java, reading their existing node-type switch statements and the handling of the emoji node described in the issue. Reproduce the ®, ™, and © cases through a Block Editor field, then verify that Content API, Page API, and rendered output preserve the characters as required.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- content
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 76/100