{"record":{"id":"92b976b8289ef4d8","repo":"BigPizzaV3/CodexPlusPlus","slug":"theme-json-key","errorCode":null,"errorMessage":"theme.json.{key} 无效","messagePattern":"theme\\.json\\.(.+?) 无效","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codex-plus-core/src/dream_skin_package.rs","lineNumber":1039,"sourceCode":"    {\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    ] {\n        if object.get(key).is_some_and(|value| {\n            value\n                .as_str()\n                .is_none_or(|text| !safe_manifest_text(text, 0, 120, false))\n        }) {\n            bail!(\"theme.json.{key} 无效\");\n        }\n    }\n    if object.get(\"promoUrl\").is_some_and(|value| {\n        value\n            .as_str()\n            .is_none_or(|text| !safe_manifest_text(text, 0, 512, false))\n    }) || object.get(\"appearance\").is_some_and(|value| {\n        value\n            .as_str()\n            .is_none_or(|appearance| !matches!(appearance, \"auto\" | \"light\" | \"dark\"))\n    }) {\n        bail!(\"theme.json 的链接或外观字段无效\");\n    }\n    if let Some(art) = object.get(\"art\") {\n        validate_theme_art(art)?;\n    }\n    if let Some(colors) = object.get(\"colors\") {\n        let colors = colors.as_object().context(\"theme.json.colors 必须是对象\")?;","sourceCodeStart":1021,"sourceCodeEnd":1057,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/f2074595a281bc057525c748175c8eb9805b0673/crates/codex-plus-core/src/dream_skin_package.rs#L1021-L1057","documentation":"Thrown by validate_theme inside a loop over optional display fields (brandSubtitle, tagline, projectPrefix, projectLabel, statusText, quote, promoTitle, promoSub): a field is present but is not a string or fails safe_manifest_text(text, 0, 120, false). The offending input is theme.json's {key} field; optional fields may be omitted but never malformed.","triggerScenarios":"Thrown at crates/codex-plus-core/src/dream_skin_package.rs:1039 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["把对应字段缩短到 120 字符内","确保字段是字符串类型或直接删除该可选字段"],"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"}