{"record":{"id":"577937a243a2ea4d","repo":"BigPizzaV3/CodexPlusPlus","slug":"error-577937","errorCode":null,"errorMessage":"主题包必须且只能包含一个背景图片","messagePattern":"主题包必须且只能包含一个背景图片","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codex-plus-core/src/dream_skin_package.rs","lineNumber":158,"sourceCode":"    let manifest_bytes = files\n        .remove(\"manifest.json\")\n        .context(\"主题包缺少 manifest.json\")?;\n    let theme_bytes = files\n        .remove(\"theme.json\")\n        .context(\"主题包缺少 theme.json\")?;\n    let css_bytes = files.remove(\"theme.css\").context(\"主题包缺少 theme.css\")?;\n    let image_name = [\"background.webp\", \"background.jpg\", \"background.png\"]\n        .iter()\n        .find(|name| files.contains_key(**name))\n        .map(|name| (*name).to_string())\n        .context(\"主题包必须包含一个背景图片\")?;\n    if [\"background.webp\", \"background.jpg\", \"background.png\"]\n        .iter()\n        .filter(|name| files.contains_key(**name))\n        .count()\n        != 1\n    {\n        bail!(\"主题包必须且只能包含一个背景图片\");\n    }\n    let image_bytes = files.remove(&image_name).expect(\"image was checked above\");\n    validate_image_content(&image_name, &image_bytes)?;\n    let license_bytes = files.remove(\"LICENSE.txt\");\n    let signature = files.remove(\"manifest.sig\");\n    if let Some(signature) = signature {\n        if signature.len() > SIGNATURE_LIMIT {\n            bail!(\"manifest.sig 超过大小限制\");\n        }\n    }\n    if !files.is_empty() {\n        bail!(\"主题包包含未处理文件\");\n    }\n\n    let manifest: DreamSkinPackageManifest = parse_json(&manifest_bytes, \"manifest.json\")?;\n    validate_manifest(&manifest, platform)?;\n    let theme: Value = parse_json(&theme_bytes, \"theme.json\")?;\n    validate_theme(&theme, &manifest, &image_name)?;","sourceCodeStart":140,"sourceCodeEnd":176,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/f2074595a281bc057525c748175c8eb9805b0673/crates/codex-plus-core/src/dream_skin_package.rs#L140-L176","documentation":"Structural guard in validate_and_read_package: the package must contain exactly one background image among background.webp/background.jpg/background.png — zero found raises the 'must contain' context error, and more than one raises this error. Ambiguity over which image is the wallpaper is not permitted.","triggerScenarios":"Thrown at crates/codex-plus-core/src/dream_skin_package.rs:158 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include exactly one background.webp, background.jpg, or background.png","Remove duplicate background images, keeping one"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f2074595a281bc057525c748175c8eb9805b0673","analyzedAt":"2026-08-23T12:52:24.489Z","contentChangedAt":"2026-08-23T12:52:24.489Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}