[BUG] /config Theme picker renders with overlapping text — option labels interleaved with syntax preview and prior transcript

Resolved 💬 4 comments Opened Apr 29, 2026 by djinna Closed May 3, 2026

Summary

Opening /config and navigating to the Theme picker renders the picker with corrupted/overlapping text — option labels collide with the live syntax-highlighting preview pane and with previous transcript lines, making the picker hard to read and use.

Steps to reproduce

  1. Run claude in any project (TTY).
  2. Type /config.
  3. Arrow down to Theme and press Enter.

Actual behavior

The Theme picker renders with multiple visual defects:

  • Option labels are interleaved with the syntax-preview's function greet() / console.log("Hello, World!") example. For example, lines render as 21. Auto (match terminal)World!"); and 22. Dark modelog("Hello, Claude!"); — the option text and the preview text are overlapping on the same row.
  • The numbered list shows duplicated entries (1, 2, 3, ...5, 6, 7) with item 4 replaced by a horizontal-rule line, and "Light mode (ANSI colors only) ✓" appears as both option 7 and as the "Theme" header confirmation row.
  • An accept edits on mode-banner string appears mid-picker rather than docked to its usual location.
  • A > /config prompt-echo line appears between the option list and the preview pane, suggesting the picker isn't fully clearing the prior transcript region before painting.

(Screenshot to be attached — please drag the image from the bug-report submitter into the issue.)

Expected behavior

The picker should clear/reserve its own region and render the option list and the syntax-preview pane cleanly, without overlap with prior transcript content or with each other.

Environment

  • Claude Code: 2.1.123
  • OS: macOS 15.6.1 (24G90), arm64
  • Terminal: Ghostty 1.3.1
  • TERM=xterm-ghostty, COLORTERM=truecolor

Related issues

  • #49848 — User-prompt turn background doesn't adapt to light terminal themes. Same general class of issue (light-mode rendering) but distinct from this picker-corruption bug.
  • #2990 — Automatic light/dark theme selection. Discovered "Auto (match terminal)" option exists in the picker, which addresses #2990; flagging here in case the documentation hasn't been updated.
  • #45084 — Respect terminal color palette in diff output instead of hardcoded truecolor codes. Possibly the same underlying root cause (hard-coded ANSI background colors) for related light-mode bands seen elsewhere.

Notes

The dark "bands" visible across the transcript (status line, mode banner, divider lines) on light themes appear to use hard-coded background colors that don't invert when the user picks a Light theme. Switching to "Auto (match terminal)" with a light Ghostty theme partially mitigates, but the picker corruption itself is independent of theme choice — it reproduces on Auto, on built-in Light, and on "Light mode (ANSI colors only)".

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗