[Feature Request][GUI App] A three-layer theming system: Theme v2, decorative theme packs, and advanced user stylesheets
What variant of Codex are you using?
msstore App
What feature would you like to see?
As the ChatGPT desktop app and Codex expand to a broader audience, visual personalization and accessibility are becoming meaningful product needs.
The existing codex-theme-v1 import/export format is already a strong and safe foundation. Please consider evolving it into a three-layer theming system, with each layer offering a different balance of capability, stability, and risk.
1. Theme v2: structured design tokens
This should be the safe, stable customization layer for general users.
In addition to the options already supported by codex-theme-v1, Theme v2 could include:
- UI and code color tokens
- Accent and semantic colors
- Typography and font sizes
- Interface density
- Spacing and corner radius
- Sidebar and window transparency
- Motion intensity and duration
- Built-in animation preset identifiers
- Separate light and dark variants
Theme v2 should remain schema-based, validated, portable as a share string, and unable to execute code or load arbitrary resources.
2. Theme Packs: decorative assets and restricted motion
For richer personalization, please consider an importable theme package format such as .codextheme.
A package could contain:
theme.json
assets/
|-background.png
|-sidebar-decoration.svg
|-empty-state.svg
|...
animations.css
This layer could support:
- Local PNG backgrounds and illustrations
- Sanitized SVG decorations
- Sidebar textures and corner ornaments
- Custom empty-state artwork
- Scoped glow, shimmer, breathing, floating, and gradient animations
- Separate decorative assets for light and dark variants
Theme packs should remain declarative and constrained:
- No JavaScript or HTML injection
- No remote resources or
@import - SVG scripts, external references, and
foreignObjectshould be removed - CSS should be scoped to documented decorative containers
- Decorative elements should use
pointer-events: noneandaria-hidden - Decorations must not cover login, permission, approval, or security UI
- Motion must respect
prefers-reduced-motion - The app should provide preview, one-click disable, and safe-mode recovery
Token-only themes could continue to use compact codex-theme-v2: share strings, while themes containing assets could be distributed as .codextheme files.
3. Advanced user stylesheet
For users who explicitly accept compatibility risks, please consider an opt-in mechanism similar to Firefox userChrome.css.
The desktop app could load a local stylesheet without modifying the signed application package. A supported implementation could provide:
- Stable
--codex-*CSS custom properties - Stable
data-codex-*styling hooks - A Settings UI for selecting, reloading, and disabling the stylesheet
- A safe-mode startup option that disables all custom styling
- Compatibility warnings after application updates
- No JavaScript or HTML injection
- Blocking of external network resources and
@import - Administrative policy controls for managed environments
The internal DOM would not need to become a supported public API. A limited set of documented variables and styling hooks would already enable meaningful advanced customization.
Why a layered model
These layers address different needs:
- Theme v2 provides safe and stable appearance controls for most users.
- Theme Packs support artwork and ambient motion without exposing the entire application UI.
- Advanced stylesheets provide an explicitly unsupported or best-effort escape hatch for users who accept update-related breakage.
This approach could:
- Improve accessibility and personal comfort
- Make the desktop app more approachable to non-developers
- Support safe community-created themes
- Preserve the integrity of the signed application package
- Discourage users from installing modified third-party clients that may access conversations, credentials, local files, or native IPC
There is already visible demand for personalized Codex themes. I have seen evidence of people charging users for modified clients simply for deep visualization customization (see this tweet (OP is in Chinese)). An official three-layer customization model could serve this demand without encouraging binary patching.
Additional information
_No response_