[BUG] /config Theme picker renders with overlapping text — option labels interleaved with syntax preview and prior transcript
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
- Run
claudein any project (TTY). - Type
/config. - 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 as21. Auto (match terminal)World!");and22. 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 onmode-banner string appears mid-picker rather than docked to its usual location. - A
> /configprompt-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)".
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗