openai / openai/codex

Codex Desktop: complete edited theme JSON leaves Import theme disabled with no validation error

Open
#43,687 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

What version of the Codex App are you using (From “About Codex” dialog)?

26.901.51231, build 8109 (read from the running app bundle's Info.plist, not the About dialog).

What subscription do you have?

Not provided; subscription-specific behavior has not been tested.

What platform is your computer?

macOS 26.6.2 (25G83); uname -mprs: Darwin 25.6.0 arm64 arm. App UI language: Chinese.

What issue are you seeing?

In Appearance > Import theme, after pasting an edited codex-theme-v1: string, the “导入主题” (Import theme) button remains gray/unavailable, with no visible explanation of which field is invalid.

The user explicitly confirmed that the entire JSON payload was pasted. Two screenshots show the beginning and end of the input respectively; the second shows the expected "surface":"#202322"},"variant":"dark"} ending. Both show the gray Import theme button and no visible validation error. JSON truncation is not the reported issue.

A complete, syntactically valid edited theme string cannot be imported, and the UI provides no actionable validation feedback. The root cause is not yet established; if a semantic restriction prevents this combination, it should be explained in the dialog.

What steps can reproduce the bug?

Reported workflow (not independently reproduced by the reporting assistant):

  1. Obtain a theme string using Copy theme. The user supplied this exported string:
codex-theme-v1:{"codeThemeId":"proof","theme":{"accent":"#3d755d","accentSource":"custom","contrast":40,"fonts":{"code":null,"ui":null},"ink":"#2f312d","opaqueWindows":false,"semanticColors":{"diffAdded":"#3d755d","diffRemoved":"#ba2623","skill":"#5f6ac2"},"surface":"#f5f3ed"},"variant":"light"}
  1. Edit the accent, ink, and surface colors and change the variant from light to dark. The assistant provided the following candidate to paste:
codex-theme-v1:{"codeThemeId":"proof","theme":{"accent":"#A3BE8C","accentSource":"custom","contrast":40,"fonts":{"code":null,"ui":null},"ink":"#E0E4DF","opaqueWindows":false,"semanticColors":{"diffAdded":"#3d755d","diffRemoved":"#ba2623","skill":"#5f6ac2"},"surface":"#202322"},"variant":"dark"}
  1. Open Appearance > Import theme and paste the candidate.
  2. Observe that Import theme is unavailable and the dialog gives no visible reason.

The user confirmed the full candidate was pasted. Its JSON syntax was also checked locally with Python json.loads. An unchanged export/import round-trip has not been tested.

What is the expected behavior?

If the payload is valid, allow import. If it is invalid or the code theme is incompatible with the selected variant, show a specific, actionable validation message (for example, malformed/truncated JSON, unsupported codeThemeId, or variant incompatibility), rather than only leaving the button disabled.

Additional information

Related: #14766 (theme importer rejects unsupported codeThemeId values).

In this report, proof was retained from the user-supplied export rather than invented as a custom ID. Whether it supports the dark variant is unknown. This may share the underlying validation path with #14766; please link/merge if appropriate. The observed bug is that the complete edited theme cannot be imported and the UI does not explain why import is unavailable.

The two user-supplied screenshots are described above; image attachments are not included in this submission. No application settings were changed by the reporting assistant.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in Appearance > Import theme by reproducing the unchanged export/import round trip and then the edited candidate; compare the results with related issue #14766. Trace the shared validation behavior and make the dialog either accept valid payloads or show a specific actionable reason when import is unavailable.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos, rust
Domain
design, desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.