BigPizzaV3/CodexPlusPlus · error

主题包文件必须全部位于根目录或唯一一层主题目录

Error message

主题包文件必须全部位于根目录或唯一一层主题目录

What it means

Layout guard in normalize_package_entries: the package mixes root-level files with files inside a directory. Content must be either all at the ZIP root or all inside exactly one theme directory; the mixed layout is ambiguous to normalize.

Source

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

    }
    Ok(())
}

fn normalize_package_entries(
    entries: Vec<(String, Option<Vec<u8>>)>,
) -> anyhow::Result<std::collections::BTreeMap<String, Vec<u8>>> {
    let content_entries = entries
        .into_iter()
        .filter_map(|(name, content)| content.map(|content| (name, content)))
        .collect::<Vec<_>>();
    if content_entries.is_empty() {
        bail!("Dream Skin 主题包为空");
    }

    let root_files = content_entries.iter().any(|(name, _)| !name.contains('/'));
    let prefix = if root_files {
        if content_entries.iter().any(|(name, _)| name.contains('/')) {
            bail!("主题包文件必须全部位于根目录或唯一一层主题目录");
        }
        None
    } else {
        let prefix = content_entries[0]
            .0
            .split_once('/')
            .map(|(prefix, _)| prefix)
            .context("主题包顶级目录无效")?;
        if prefix.is_empty()
            || content_entries.iter().any(|(name, _)| {
                name.split_once('/').is_none_or(|(candidate, file)| {
                    candidate != prefix || file.is_empty() || file.contains('/')
                })
            })
        {
            bail!("主题包只能包含唯一一层主题目录");
        }
        Some(format!("{prefix}/"))

View on GitHub (pinned to f2074595a2)

Solutions

  1. Rebuild the ZIP with all files either at the root or inside one theme folder
  2. Move stray root files into the theme directory (or vice versa)
Defensive patterns

Strategy: validation

When it happens

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