dotCMS / dotCMS/core

Block Editor: trademark/copyright/registered symbols (emoji nodes) silently disappear on render — no error, no fallback

Open
#36,863 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

OKR : Customer Support Team : Maintenance
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

  1. Create or edit any contentlet with a Block Editor field.
  2. Type or paste a ®, ™, or © character directly into the text.
  3. Save the contentlet.
  4. 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

https://dotcms.freshdesk.com/a/tickets/38575

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.