Desktop app on RTL Windows locale: browser/preview pane renders a duplicate "ghost" layer over the chat

Status Closed — not planned
Maintainer reply None cached
Activity 1 comment · opened Jul 19, 2026 · closed Jul 22, 2026

Environment

  • Claude Desktop 1.22209.3.0 (MSIX, Microsoft Store)
  • Windows 11 Pro, build 26200
  • Windows display language: Hebrew (OS mirrors the app window: RTL frame, window controls on the left)

Steps to reproduce

  1. Set the Windows display language to Hebrew (or Arabic) so the app window is RTL-mirrored.
  2. Launch Claude Desktop (clean start, no DevTools open, no scripts injected).
  3. Open a Claude Code session and open the built-in browser / preview pane (e.g. have Claude preview an HTML file or start a dev server).

What happens

A duplicate copy of the pane's content is drawn floating over the chat area, in addition to the correctly-placed pane. The ghost copy:

  • disappears when the pane has focus (e.g. clicking a menu inside the browser pane),
  • returns as soon as focus moves elsewhere (clicking back into the chat),
  • persists with a single tab open, across app restarts.

This reproduces on a completely clean app restart with no DevTools scripts injected.

Suspected cause

The behavior is consistent with the embedded webview (live WebContentsView) and its snapshot/placeholder layer being positioned in different coordinate spaces -- one mirrored for the RTL window frame, the other not -- so they never overlap and both are visible.

Workaround

Launching the app with LTR chrome eliminates the ghost entirely:

Claude.exe --lang=en-US --force-ui-direction=ltr

(Confirmed working on the machine above -- the window unmirrors and the pane renders once.)

Related context

We maintain a small RTL companion for Hebrew-speaking users of Claude Desktop (DevTools-injected CSS/dir tagging, no app modification): https://github.com/Sabarhealth/claude-rtl-companion -- the ghost pane reproduces with and without it, but proper RTL locale handling in the desktop app would make both workarounds unnecessary. Happy to provide screenshots, diagnostics, or test builds.

🤖 Generated with Claude Code on the user's behalf

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗