[plugins] Add dark-mode logo metadata#29488
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 352d83c424
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
xl-openai
approved these changes
Jun 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds additive dark-mode plugin logo metadata across manifests, remote catalogs, and the app-server protocol while keeping uninstalled Git listings free of synthetic local paths.
Supersedes #28945. This replacement uses an upstream branch so trusted CI can use the repository-provided remote Bazel configuration.
Current state
Plugin interfaces expose only the default logo asset. Clients therefore cannot select a dedicated dark-mode logo even when a plugin provides one.
What this PR changes
logoDarkandlogoUrlDarkfields toPluginInterface.interface.logoDarkassets and maps remotelogo_url_darkvalues.logoDark, from uninstalled Git fallback listings until the plugin has a real local root.Local manifests expose
interface.logoDarkas a package-relative asset path. Remote catalog responses exposelogo_url_dark. These values map into separate app-server fields so clients can preserve local-path and remote-URL handling.Risk
The fields are additive and nullable, so existing clients retain their current logo behavior. The main risks are an incomplete mapping path or exposing a synthetic local path for an uninstalled Git plugin. Local-manifest, remote-catalog, fallback-listing, protocol serialization, and app-server integration tests cover those paths.
Spiciness: 2/5
Testing
just write-app-server-schemajust fmtlogo_darkresolved to/assets/logo-dark.png, then passed after the fallback-listing fix.just test -p codex-core-plugins(267 tests passed)just test -p codex-app-server 'suite::v2::plugin'(114 tests passed)just test -p codex-app-server-protocol -p codex-core-plugins -p codex-plugin -p codex-skills(517 tests passed before the follow-up)just test -p codex-tui plugin(47 tests passed)interface.logoDarkwith the bundled validator.Manual verification
Create a local plugin with both
interface.logoandinterface.logoDark, then callplugin/listorplugin/read. Confirm the response contains separatelogoandlogoDarkpaths. For a remote catalog entry, confirmlogoUrlDarkis populated fromlogo_url_dark. For an uninstalled Git marketplace entry, confirm path-backed interface assets remain absent until installation.Issue: N/A - coordinated maintainer change.