{"record":{"id":"9620df49a2a212d2","repo":"BigPizzaV3/CodexPlusPlus","slug":"theme-json-manifest","errorCode":null,"errorMessage":"theme.json 与 manifest 身份或背景图不一致","messagePattern":"theme\\.json 与 manifest 身份或背景图不一致","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codex-plus-core/src/dream_skin_package.rs","lineNumber":1015,"sourceCode":"        \"promoSub\",\n        \"promoUrl\",\n        \"appearance\",\n        \"art\",\n        \"colors\",\n    ];\n    if REQUIRED.iter().any(|key| !object.contains_key(*key))\n        || object\n            .keys()\n            .any(|key| !REQUIRED.contains(&key.as_str()) && !OPTIONAL.contains(&key.as_str()))\n    {\n        bail!(\"theme.json 包含缺失或不支持的字段\");\n    }\n    if object.get(\"schemaVersion\").and_then(Value::as_u64) != Some(1)\n        || object.get(\"id\").and_then(Value::as_str) != Some(manifest.theme_id.as_str())\n        || object.get(\"name\").and_then(Value::as_str).is_none()\n        || object.get(\"image\").and_then(Value::as_str) != Some(image_name)\n    {\n        bail!(\"theme.json 与 manifest 身份或背景图不一致\");\n    }\n    if object\n        .get(\"name\")\n        .and_then(Value::as_str)\n        .is_some_and(|name| !safe_manifest_text(name, 1, 80, false))\n    {\n        bail!(\"theme.json.name 无效\");\n    }\n    for key in [\n        \"brandSubtitle\",\n        \"tagline\",\n        \"projectPrefix\",\n        \"projectLabel\",\n        \"statusText\",\n        \"quote\",\n        \"promoTitle\",\n        \"promoSub\",\n    ] {","sourceCodeStart":997,"sourceCodeEnd":1033,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/f2074595a281bc057525c748175c8eb9805b0673/crates/codex-plus-core/src/dream_skin_package.rs#L997-L1033","documentation":"Thrown by validate_theme during cross-file consistency checks: theme.json's schemaVersion is not 1, its id does not equal manifest.theme_id, name is missing/not a string, or image does not equal the package's actual image filename. The offending input is the mismatch between theme.json identity fields and the manifest/image_name arguments; the three files of a package must describe the same theme.","triggerScenarios":"Thrown at crates/codex-plus-core/src/dream_skin_package.rs:1015 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["把 theme.json 的 id 改为与 manifest.themeId 一致","把 image 字段改为实际包含的背景图文件名","确认 schemaVersion 为 1 且 name 非空"],"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"}