BigPizzaV3/CodexPlusPlus · error

theme.css 包含不允许的控制字符、注释或转义

Error message

theme.css 包含不允许的控制字符、注释或转义

What it means

Character guard in parse_safe_css: the stylesheet contains a character rejected by forbidden_css_character (control characters), CSS comments (/* */), or backslash escapes. The Safe CSS subset is deliberately comment- and escape-free so the compiled output is fully predictable.

Source

Thrown at crates/codex-plus-core/src/dream_skin_package.rs:285

}

#[derive(Debug)]
struct SafeCssRule<'a> {
    selector: &'a str,
    part: &'a str,
    declarations: Vec<(&'a str, &'a str)>,
}

fn parse_safe_css(css: &str) -> anyhow::Result<Vec<SafeCssRule<'_>>> {
    if css.is_empty() || css.len() > CSS_LIMIT {
        bail!("theme.css 为空或超过 256 KiB 限制");
    }
    if css.chars().any(forbidden_css_character)
        || css.contains("/*")
        || css.contains("*/")
        || css.contains('\\')
    {
        bail!("theme.css 包含不允许的控制字符、注释或转义");
    }
    let allowed_parts = [
        "root",
        "sidebar",
        "main",
        "header",
        "home",
        "home-hero",
        "project-list",
        "thread",
        "message",
        "composer",
        "composer-toolbar",
        "dialog",
    ];
    let mut parsed = Vec::new();
    let mut declarations = 0usize;
    let mut rest = css;

View on GitHub (pinned to f2074595a2)

Solutions

  1. Strip comments, backslash escapes, and control characters from theme.css
  2. Use only plain ASCII-safe declarations
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/codex-plus-core/src/dream_skin_package.rs:285 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of BigPizzaV3/CodexPlusPlus@f2074595a2 (2026-08-23). Data as JSON: /api/errors/068e3da5d5b55c7f. Report an issue: GitHub.