BigPizzaV3/CodexPlusPlus · error

dream skin target theme should serialize

Error message

dream skin target theme should serialize

What it means

dream_skin_target_assets maps a theme target to its engine tuple and then serializes the theme config with serde_json, treating failure as unreachable via this expect-style error. It fires only if serialization of the theme value fails, which for the internal theme types indicates a broken invariant (e.g. a non-string map key) rather than bad user input.

Source

Thrown at crates/codex-plus-core/src/assets.rs:117

        "codex-snow" => ("snow", CODEX_SNOW_RENDERER, CODEX_SNOW_CSS),
        "glass-vision" => ("glass-vision", GLASS_VISION_RENDERER, GLASS_VISION_CSS),
        value if uses_cidala_target_engine(value) => {
            ("cidala-tiger", CIDALA_TARGET_RENDERER, CIDALA_TARGET_CSS)
        }
        _ => ("dream-skin", DREAM_TARGET_RENDERER, DREAM_TARGET_CSS),
    }
}

fn dream_skin_target_runtime_script(settings: &BackendSettings, include_art: bool) -> String {
    if !settings.codex_app_dream_skin_enabled || settings.codex_app_dream_skin_paused {
        return String::new();
    }

    let (engine, renderer, base_css) = dream_skin_target_assets(settings);
    let managed_css = managed_dream_skin_css(settings);
    let css = format!("{base_css}\n{managed_css}");
    let theme = serde_json::to_string(&settings.codex_app_dream_skin_theme_config)
        .expect("dream skin target theme should serialize");
    let style_revision = dream_skin_content_signature(css.as_bytes());
    let payload_revision =
        dream_skin_target_payload_signature(settings, engine, &style_revision, &theme);
    let mut payload = renderer
        .replace("__DREAM_CSS_JSON__", &serde_json::to_string(&css).unwrap())
        .replace("__DREAM_ART_JSON__", "window.__CODEX_PLUS_DREAM_SKIN_ART__")
        .replace(
            "__DREAM_THEME_JSON__",
            "window.__CODEX_PLUS_DREAM_SKIN_THEME__",
        )
        .replace(
            "__DREAM_VERSION_JSON__",
            &serde_json::to_string("2.1.0-snow.1").unwrap(),
        )
        .replace(
            "__GLASS_VISION_CSS_JSON__",
            &serde_json::to_string(&css).unwrap(),
        )

View on GitHub (pinned to f2074595a2)

Solutions

  1. Inspect the theme config value for non-serializable content
  2. Check for recent changes to the theme data structures
  3. Report as a bug; this path is expected to be infallible
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at crates/codex-plus-core/src/assets.rs:117 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of BigPizzaV3/CodexPlusPlus@f2074595a2 (2026-08-23). Data as JSON: /api/errors/bd119358509c3e56. Report an issue: GitHub.