{"record":{"id":"b71a6d7879be03c8","repo":"BigPizzaV3/CodexPlusPlus","slug":"error-b71a6d","errorCode":null,"errorMessage":"主题包包含未处理文件","messagePattern":"主题包包含未处理文件","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codex-plus-core/src/dream_skin_package.rs","lineNumber":170,"sourceCode":"    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)?;\n    let css = String::from_utf8(css_bytes).context(\"theme.css 不是有效 UTF-8\")?;\n    validate_safe_css(&css)?;\n    validate_manifest_files(\n        &manifest,\n        &manifest_bytes,\n        &theme_bytes,\n        css.as_bytes(),\n        &image_name,\n        &image_bytes,\n        license_bytes.as_deref(),\n    )?;\n","sourceCodeStart":152,"sourceCodeEnd":188,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/f2074595a281bc057525c748175c8eb9805b0673/crates/codex-plus-core/src/dream_skin_package.rs#L152-L188","documentation":"Completeness guard at the end of validate_and_read_package: after removing all recognized files (manifest, theme, css, image, license, signature), some entries remain in the map. The package contains files that passed the name whitelist but were not consumed, indicating an unexpected layout.","triggerScenarios":"Thrown at crates/codex-plus-core/src/dream_skin_package.rs:170 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Rebuild the package with only the supported file set","Check for duplicated or misnamed files inside the ZIP"],"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"}