BigPizzaV3/CodexPlusPlus · error

theme.json.colors 缺少 {key}

Error message

theme.json.colors 缺少 {key}

What it means

Thrown by validate_theme when a required colors key is absent, its value is not a string, or it fails valid_theme_color (the color-format check). The offending input is theme.json.colors[{key}]; this fires inside the per-key loop that follows the exact-key-count check, so the palette shape was right but one specific color value is missing or invalid.

Source

Thrown at crates/codex-plus-core/src/dream_skin_package.rs:1079

            "panelAlt",
            "accent",
            "accentAlt",
            "secondary",
            "highlight",
            "text",
            "muted",
            "line",
        ];
        if colors.len() != keys.len() {
            bail!("theme.json.colors 字段无效");
        }
        for key in keys {
            if colors
                .get(key)
                .and_then(Value::as_str)
                .is_none_or(|value| !valid_theme_color(value))
            {
                bail!("theme.json.colors 缺少 {key}");
            }
        }
    }
    Ok(())
}

fn validate_manifest_files(
    manifest: &DreamSkinPackageManifest,
    manifest_bytes: &[u8],
    theme_bytes: &[u8],
    css_bytes: &[u8],
    image_name: &str,
    image_bytes: &[u8],
    license_bytes: Option<&[u8]>,
) -> anyhow::Result<()> {
    let mut seen = HashSet::new();
    for file in &manifest.files {
        if !seen.insert(file.path.as_str())

View on GitHub (pinned to f2074595a2)

Solutions

  1. 补齐缺失的颜色键
  2. 把颜色值改为合法格式(如 #RRGGBB)
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/codex-plus-core/src/dream_skin_package.rs:1079 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/10e4697850f86d1d. Report an issue: GitHub.