BigPizzaV3/CodexPlusPlus · error · anyhow::Error

unsupported Dream Skin package image: {other}

Error message

unsupported Dream Skin package image: {other}

What it means

Validation in save_validated_dream_skin_package: the package's image_name is not one of the supported image filenames (e.g. background.webp or other known assets), so Codex++ cannot map it to a handled image type when staging the theme. The unexpected value appears in the message.

Source

Thrown at crates/codex-plus-core/src/dream_skin_library.rs:337

            .context("同 ID 本地主题无法确认身份,已拒绝覆盖")?;
        if existing.config.id != config.id {
            bail!("同 ID 本地主题身份不一致,已拒绝覆盖");
        }
    }
    let suffix = unique_suffix();
    let staging = themes_dir.join(format!(".stage-{}-{suffix}", config.id));
    std::fs::create_dir(&staging).with_context(|| {
        format!(
            "failed to create Dream Skin package staging directory {}",
            staging.display()
        )
    })?;
    let staged = (|| -> anyhow::Result<()> {
        let image_extension = match package.image_name.as_str() {
            "background.webp" => "webp",
            "background.jpg" => "jpg",
            "background.png" => "png",
            other => bail!("unsupported Dream Skin package image: {other}"),
        };
        crate::settings::atomic_write(
            &staging.join(format!("image.{image_extension}")),
            &package.image_bytes,
        )?;
        crate::settings::atomic_write(
            &staging.join(THEME_CONFIG_FILE),
            &serde_json::to_vec_pretty(&config)?,
        )?;
        crate::settings::atomic_write(&staging.join("theme.css"), package.css.as_bytes())?;
        crate::settings::atomic_write(&staging.join("manifest.json"), &package.manifest_bytes)?;
        if let Some(license) = &package.license_bytes {
            crate::settings::atomic_write(&staging.join("LICENSE.txt"), license)?;
        }
        Ok(())
    })();
    if let Err(error) = staged {
        let _ = remove_known_theme_directory(&staging);

View on GitHub (pinned to f2074595a2)

Solutions

  1. Repack the theme with a supported image filename (background.webp/png)
  2. Update Codex++ if the package uses a newly introduced image format
  3. Reject hand-edited packages with renamed image files
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/codex-plus-core/src/dream_skin_library.rs:337 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/8ab615e6e3f2f725. Report an issue: GitHub.