{"record":{"id":"f131366318a9d26a","repo":"BigPizzaV3/CodexPlusPlus","slug":"manifest-capabilities-safe-css","errorCode":null,"errorMessage":"manifest.capabilities 无效或缺少 safe-css 能力","messagePattern":"manifest\\.capabilities 无效或缺少 safe-css 能力","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/codex-plus-core/src/dream_skin_package.rs","lineNumber":948,"sourceCode":"            .platforms\n            .iter()\n            .any(|item| !matches!(item.as_str(), \"macos\" | \"windows\"))\n    {\n        bail!(\"manifest.platforms 无效\");\n    }\n    if !manifest.platforms.iter().any(|item| item == platform) {\n        bail!(\"主题包不支持当前平台：{platform}\");\n    }\n    if manifest.capabilities.is_empty()\n        || manifest.capabilities.len() > 3\n        || has_duplicates(&manifest.capabilities)\n        || manifest\n            .capabilities\n            .iter()\n            .any(|item| !matches!(item.as_str(), \"background\" | \"tokens\" | \"safe-css\"))\n        || !manifest.capabilities.iter().any(|item| item == \"safe-css\")\n    {\n        bail!(\"manifest.capabilities 无效或缺少 safe-css 能力\");\n    }\n    if !safe_manifest_text(&manifest.publisher.display_name, 1, 80, false)\n        || manifest.publisher.id.is_empty()\n        || manifest.publisher.id.len() > 64\n        || !manifest\n            .publisher\n            .id\n            .bytes()\n            .all(|byte| byte.is_ascii_alphanumeric() || matches!(byte, b'_' | b'-'))\n        || manifest.license.is_empty()\n        || manifest.license.len() > 64\n        || !manifest.license.bytes().enumerate().all(|(index, byte)| {\n            byte.is_ascii_alphanumeric()\n                || (index > 0 && matches!(byte, b' ' | b'.' | b'+' | b'(' | b')' | b'-'))\n        })\n        || !safe_manifest_text(&manifest.provenance.summary, 1, 500, true)\n    {\n        bail!(\"manifest 发布者、许可证或来源说明为空\");","sourceCodeStart":930,"sourceCodeEnd":966,"githubUrl":"https://github.com/BigPizzaV3/CodexPlusPlus/blob/f2074595a281bc057525c748175c8eb9805b0673/crates/codex-plus-core/src/dream_skin_package.rs#L930-L966","documentation":"Thrown by validate_manifest when the capabilities array is empty, has more than 3 entries, contains duplicates, lists a capability other than background/tokens/safe-css, or omits the mandatory \"safe-css\" entry. The offending input is manifest.capabilities; safe-css is required because every Dream Skin theme is compiled through the Safe CSS pipeline.","triggerScenarios":"Thrown at crates/codex-plus-core/src/dream_skin_package.rs:948 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["声明 capabilities 为 background/tokens/safe-css 的子集且必含 safe-css","去掉未知能力项和重复项"],"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"}