Custom theme diffAdded/diffRemoved/diffAddedDimmed/diffRemovedDimmed overrides ignored in diff renderer (still present in 2.1.227)
Description
Custom theme color overrides for diff line backgrounds (diffAdded, diffRemoved, diffAddedDimmed, diffRemovedDimmed) have no effect on the rendered diff. The diff view always falls back to the base theme's default colors, while other overrides in the same theme file (e.g. claude) resolve and render correctly.
This appears to be the same underlying bug reported in #66937 and #69445, both closed without a fix (one as duplicate, one as stale/"not planned"). Filing fresh since it reproduces on a current version.
Environment
- Claude Code version: 2.1.227
- OS: macOS (Darwin), Apple Terminal.app
"tui": "fullscreen"in settings.json
Repro steps
- Create
~/.claude/themes/custom.json:
{
"name": "custom",
"base": "dark",
"overrides": {
"claude": "ansi:magenta",
"diffAdded": "#354F0C",
"diffRemoved": "#550021",
"diffAddedDimmed": "#1E2D07",
"diffRemovedDimmed": "#310013"
}
}
- Set
"theme": "custom:custom"in~/.claude/settings.json - Select the theme via
/themeand confirm it's active - Trigger any file edit/diff
Expected: diff line backgrounds use #354F0C (added) / #550021 (removed)
Actual: diff line backgrounds use the dark base theme's default diff colors; the claude override in the same file applies correctly
Notes
Per the analysis in #66937, the diff-rendering path appears to resolve colors through a different code path (currentTheme, which collapses a custom theme down to just its base name) than the rest of the UI (resolvedTheme, which correctly merges overrides). If that's still accurate, the fix is likely to make the diff renderer consult the same resolved/merged theme object used elsewhere.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗