Theming: Unable to change text input placeholder color #3314

Open
opened 2026-02-16 17:39:37 -05:00 by yindo · 2 comments
Owner

Originally created by @b0o on GitHub (Dec 4, 2025).

Originally assigned to: @rekram1-node on GitHub.

Description

It seems none of the theme keys apply to the placeholder text in input fields:

Image

If I create a custom theme where each color is set to #00FF00, the placeholder text is the only element that is unchanged:

Image

Same with the command palette:

Image
All-Green Theme
{
  "$schema": "https://opencode.ai/theme.json",
  "defs": {},
  "theme": {
    "primary": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "secondary": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "accent": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "error": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "warning": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "success": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "info": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "text": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "textMuted": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "background": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "backgroundPanel": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "backgroundElement": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "border": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "borderActive": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "borderSubtle": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "diffAdded": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "diffRemoved": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "diffContext": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "diffHunkHeader": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "diffHighlightAdded": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "diffHighlightRemoved": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "diffAddedBg": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "diffRemovedBg": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "diffContextBg": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "diffLineNumber": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "diffAddedLineNumberBg": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "diffRemovedLineNumberBg": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownText": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownHeading": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownLink": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownLinkText": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownCode": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownBlockQuote": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownEmph": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownStrong": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownHorizontalRule": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownListItem": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownListEnumeration": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownImage": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownImageText": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "markdownCodeBlock": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "syntaxComment": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "syntaxKeyword": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "syntaxFunction": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "syntaxVariable": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "syntaxString": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "syntaxNumber": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "syntaxType": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "syntaxOperator": {
      "dark": "#00ff00",
      "light": "#00ff00"
    },
    "syntaxPunctuation": {
      "dark": "#00ff00",
      "light": "#00ff00"
    }
  }
}

OpenCode version

1.0.133

Steps to reproduce

Add the example theme I provided, load opencode, select that theme.

Screenshot and/or share link

No response

Operating System

Arch Linux

Terminal

Ghostty

Originally created by @b0o on GitHub (Dec 4, 2025). Originally assigned to: @rekram1-node on GitHub. ### Description It seems none of the theme keys apply to the placeholder text in input fields: <img width="549" height="289" alt="Image" src="https://github.com/user-attachments/assets/28ac1388-e674-4c9c-a63c-4d3c6042044b" /> If I create a custom theme where each color is set to `#00FF00`, the placeholder text is the only element that is unchanged: <img width="199" height="66" alt="Image" src="https://github.com/user-attachments/assets/0e1f0676-a1d4-4f62-b83f-46c314a5ac7d" /> Same with the command palette: <img width="525" height="562" alt="Image" src="https://github.com/user-attachments/assets/6968e0ec-49b8-47c4-ba11-319148b8ab5c" /> <details> <summary>All-Green Theme</summary> ```json { "$schema": "https://opencode.ai/theme.json", "defs": {}, "theme": { "primary": { "dark": "#00ff00", "light": "#00ff00" }, "secondary": { "dark": "#00ff00", "light": "#00ff00" }, "accent": { "dark": "#00ff00", "light": "#00ff00" }, "error": { "dark": "#00ff00", "light": "#00ff00" }, "warning": { "dark": "#00ff00", "light": "#00ff00" }, "success": { "dark": "#00ff00", "light": "#00ff00" }, "info": { "dark": "#00ff00", "light": "#00ff00" }, "text": { "dark": "#00ff00", "light": "#00ff00" }, "textMuted": { "dark": "#00ff00", "light": "#00ff00" }, "background": { "dark": "#00ff00", "light": "#00ff00" }, "backgroundPanel": { "dark": "#00ff00", "light": "#00ff00" }, "backgroundElement": { "dark": "#00ff00", "light": "#00ff00" }, "border": { "dark": "#00ff00", "light": "#00ff00" }, "borderActive": { "dark": "#00ff00", "light": "#00ff00" }, "borderSubtle": { "dark": "#00ff00", "light": "#00ff00" }, "diffAdded": { "dark": "#00ff00", "light": "#00ff00" }, "diffRemoved": { "dark": "#00ff00", "light": "#00ff00" }, "diffContext": { "dark": "#00ff00", "light": "#00ff00" }, "diffHunkHeader": { "dark": "#00ff00", "light": "#00ff00" }, "diffHighlightAdded": { "dark": "#00ff00", "light": "#00ff00" }, "diffHighlightRemoved": { "dark": "#00ff00", "light": "#00ff00" }, "diffAddedBg": { "dark": "#00ff00", "light": "#00ff00" }, "diffRemovedBg": { "dark": "#00ff00", "light": "#00ff00" }, "diffContextBg": { "dark": "#00ff00", "light": "#00ff00" }, "diffLineNumber": { "dark": "#00ff00", "light": "#00ff00" }, "diffAddedLineNumberBg": { "dark": "#00ff00", "light": "#00ff00" }, "diffRemovedLineNumberBg": { "dark": "#00ff00", "light": "#00ff00" }, "markdownText": { "dark": "#00ff00", "light": "#00ff00" }, "markdownHeading": { "dark": "#00ff00", "light": "#00ff00" }, "markdownLink": { "dark": "#00ff00", "light": "#00ff00" }, "markdownLinkText": { "dark": "#00ff00", "light": "#00ff00" }, "markdownCode": { "dark": "#00ff00", "light": "#00ff00" }, "markdownBlockQuote": { "dark": "#00ff00", "light": "#00ff00" }, "markdownEmph": { "dark": "#00ff00", "light": "#00ff00" }, "markdownStrong": { "dark": "#00ff00", "light": "#00ff00" }, "markdownHorizontalRule": { "dark": "#00ff00", "light": "#00ff00" }, "markdownListItem": { "dark": "#00ff00", "light": "#00ff00" }, "markdownListEnumeration": { "dark": "#00ff00", "light": "#00ff00" }, "markdownImage": { "dark": "#00ff00", "light": "#00ff00" }, "markdownImageText": { "dark": "#00ff00", "light": "#00ff00" }, "markdownCodeBlock": { "dark": "#00ff00", "light": "#00ff00" }, "syntaxComment": { "dark": "#00ff00", "light": "#00ff00" }, "syntaxKeyword": { "dark": "#00ff00", "light": "#00ff00" }, "syntaxFunction": { "dark": "#00ff00", "light": "#00ff00" }, "syntaxVariable": { "dark": "#00ff00", "light": "#00ff00" }, "syntaxString": { "dark": "#00ff00", "light": "#00ff00" }, "syntaxNumber": { "dark": "#00ff00", "light": "#00ff00" }, "syntaxType": { "dark": "#00ff00", "light": "#00ff00" }, "syntaxOperator": { "dark": "#00ff00", "light": "#00ff00" }, "syntaxPunctuation": { "dark": "#00ff00", "light": "#00ff00" } } } ``` </details> ### OpenCode version 1.0.133 ### Steps to reproduce Add the example theme I provided, load opencode, select that theme. ### Screenshot and/or share link _No response_ ### Operating System Arch Linux ### Terminal Ghostty
yindo added the bug label 2026-02-16 17:39:37 -05:00
Author
Owner

@github-actions[bot] commented on GitHub (Dec 4, 2025):

This issue might be a duplicate of existing issues. Please check:

  • #4461: Input text is black on black (similar issue with input text styling and visibility)
  • #4928: Diffs invisible on light mode (related to theme colors not applying to certain UI elements)
  • #4551: Code Formatting for light themes does not correctly (related issue with text styling in light themes)

Feel free to ignore if none of these address your specific case.

@github-actions[bot] commented on GitHub (Dec 4, 2025): This issue might be a duplicate of existing issues. Please check: - #4461: Input text is black on black (similar issue with input text styling and visibility) - #4928: Diffs invisible on light mode (related to theme colors not applying to certain UI elements) - #4551: Code Formatting for light themes does not correctly (related issue with text styling in light themes) Feel free to ignore if none of these address your specific case.
Author
Owner

@ariane-emory commented on GitHub (Dec 5, 2025):

Proposal: how about we add placeholderText as a new, optional theme field to control the colour of placeholder text, falling back to the existing textMuted property if the placeholderText field is not present in the theme?

@ariane-emory commented on GitHub (Dec 5, 2025): Proposal: how about we add `placeholderText` as a new, optional theme field to control the colour of placeholder text, falling back to the existing `textMuted` property if the `placeholderText` field is not present in the theme?
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#3314