Arabic RTL chat text renders with broken BiDi layout on Windows

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

TITLE:
Arabic RTL chat messages render with broken BiDi layout (LTR container)

PRODUCT:
Cursor IDE — Agent / Chat panel

SEVERITY:
High — Arabic responses are difficult or impossible to read correctly


SUMMARY:
When the AI assistant replies in Arabic (RTL), the chat UI renders the message
in a Left-to-Right (LTR) layout container. Arabic characters are shaped correctly
(glyphs join properly), but paragraph direction, word order, punctuation placement,
and list formatting are wrong. Mixing Arabic with English technical terms, numbers,
URLs, or keyboard shortcuts in the same line makes the text appear scrambled or
“reversed” to Arabic readers.


STEPS TO REPRODUCE:

  1. Open Cursor on Windows 10
  2. Open Agent / Chat
  3. Ask the assistant to reply in Arabic
  4. Request content that includes:
    • Bullet lists
    • Numbered steps
    • English technical terms (e.g. hover, Bento, OTP, FAB, modals)
    • Keyboard shortcuts (Ctrl + Shift + P)
    • Numbers with units (20px, 64px)
  5. Observe the rendered message in the chat bubble

EXPECTED BEHAVIOR:

  • Chat bubble should use dir=“rtl” or equivalent for Arabic content
  • Text should be right-aligned
  • Bullet points should appear on the RIGHT side of lines
  • Numbered lists should read naturally RTL: number on the right, period after number
  • LTR segments (English words, shortcuts, URLs) should be isolated (Unicode BiDi
    isolates or separate blocks) without breaking Arabic word order
  • Punctuation should follow Arabic reading order

ACTUAL BEHAVIOR:

  1. LIST ALIGNMENT:

    • Bullet lists are left-aligned; bullets appear on the LEFT instead of RIGHT
    • Entire Arabic paragraphs align to the left edge of the chat bubble
  2. WORD ORDER (BiDi):

    • Arabic and English in the same line are ordered as if the line is LTR
    • Example symptom: Arabic words appear to the LEFT of English terms when they
      should follow RTL sentence flow
    • Sentences feel “backwards” or fragmented to native Arabic readers
  3. PUNCTUATION:

    • Periods appear at the LEFT of list numbers (e.g. “.1” instead of “1.”)
    • Commas, colons, dashes (—), and parentheses are misplaced relative to Arabic text
    • Parenthetical English like “(zebra)” breaks the Arabic sentence structure
  4. MIXED CONTENT:

    • Technical terms (hover, Bento, OTP, FAB, modals, wallet, IBM Plex) disrupt layout
    • Keyboard shortcuts (Ctrl + Shift + P) split Arabic instruction text incorrectly
    • Numbers and px units appear in wrong positions within Arabic phrases
  5. CHARACTER RENDERING:

    • Arabic letters themselves are NOT individually reversed — joining is correct
    • The bug is LAYOUT / DIRECTIONALITY, not font shaping

EXAMPLE CONTENT THAT TRIGGERS THE BUG (from screenshots):

Screenshot 1 — Bullet list titled “التحسينات الجديدة”:

  • Items mix Arabic with English (hover, Bento, zebra, OTP, FAB, modals, wallet, IBM Plex)
  • Bullets on left; lines left-aligned; dashes and commas in wrong positions

Screenshot 2 — Numbered instructions “اختصار لوحة الأوامر”:

  • Steps show “.1 اضغط Ctrl + Shift + P” with period on the wrong side
  • Arabic verb “اضغط” appears left of the shortcut instead of natural RTL order
  • Same issue for “.2 اكتب: Report Issue” and “.3 اختر الأمر وتابع”

WORKAROUND (user-side):

  • Ask the assistant to write pure Arabic without inline English
  • Copy reply to Word/Notepad/browser with explicit RTL — displays correctly there
  • Confirms the bug is in Cursor chat rendering, not in the generated text itself

ENVIRONMENT:

  • OS: Windows 10 (build 19045)
  • Interface language: Arabic user, mixed AR/EN assistant output
  • Cursor version: [INSERT FROM Help > About]
  • Chat: Agent panel (RTL Arabic responses)

ATTACHMENTS:

  • Screenshot 1: Bullet list with broken RTL layout and mixed EN/AR terms
  • Screenshot 2: Numbered steps with reversed punctuation and shortcut placement

REQUEST:
Please add proper RTL/BiDi support to the chat message renderer:

  • Detect Arabic (or respect lang/dir on message blocks)
  • Apply direction: rtl and text-align: right for Arabic messages
  • Use unicode-bidi: plaintext or BiDi isolates (U+2066/U+2067) for mixed segments
  • Fix list (ul/ol) direction in markdown rendering for RTL locales

Thank you.

Steps to Reproduce

STEPS TO REPRODUCE:

  1. Open Cursor on Windows 10
  2. Open Agent / Chat
  3. Ask the assistant to reply in Arabic
  4. Request content that includes:
    • Bullet lists
    • Numbered steps
    • English technical terms (e.g. hover, Bento, OTP, FAB, modals)
    • Keyboard shortcuts (Ctrl + Shift + P)
    • Numbers with units (20px, 64px)
  5. Observe the rendered message in the chat bubble

Expected Behavior

EXPECTED BEHAVIOR:

  • Chat bubble should use dir=“rtl” or equivalent for Arabic content
  • Text should be right-aligned
  • Bullet points should appear on the RIGHT side of lines
  • Numbered lists should read naturally RTL: number on the right, period after number
  • LTR segments (English words, shortcuts, URLs) should be isolated (Unicode BiDi
    isolates or separate blocks) without breaking Arabic word order
  • Punctuation should follow Arabic reading order

Screenshots / Screen Recordings

Operating System

Windows 10/11

Version Information

Cursor 3.7.19 (stable) — VS Code 1.105.1 — commit 80c653c2c3528e65016a0d304b54486084b470b0 — Windows 10

Does this stop you from using Cursor

Yes - Cursor is unusable

Hey @moeyd_alwazzan!

This is a known, long-standing issue. Some community members have developed their own workarounds that might be worth taking a look at.

Try this: