BigPizzaV3/CodexPlusPlus · error

不支持的主题市场安装记录版本

Error message

不支持的主题市场安装记录版本

What it means

Version guard in read_install_records: the market install-records file exists but its schema_version differs from the current market_schema_version(). Old or newer record formats cannot be trusted for version tracking, so loading fails instead of guessing.

Source

Thrown at crates/codex-plus-core/src/dream_skin_market.rs:312

        bail!("主题市场缓存超过大小限制");
    }
    let mut manifest: DreamSkinMarketManifest =
        serde_json::from_slice(&std::fs::read(&path)?).context("主题市场缓存不是有效 JSON")?;
    validate_manifest(&mut manifest)?;
    Ok(manifest)
}

fn read_install_records(state_dir: &Path) -> anyhow::Result<MarketInstallRecords> {
    let path = state_dir.join(MARKET_INSTALLS_FILE);
    if !path.is_file() {
        return Ok(MarketInstallRecords {
            schema_version: market_schema_version(),
            themes: BTreeMap::new(),
        });
    }
    let records: MarketInstallRecords = serde_json::from_slice(&std::fs::read(path)?)?;
    if records.schema_version != market_schema_version() {
        bail!("不支持的主题市场安装记录版本");
    }
    Ok(records)
}

fn record_market_install(state_dir: &Path, id: &str, version: &str) -> anyhow::Result<()> {
    let mut records = read_install_records(state_dir)?;
    records.themes.insert(id.to_string(), version.to_string());
    let bytes = serde_json::to_vec_pretty(&records)?;
    crate::settings::atomic_write(&state_dir.join(MARKET_INSTALLS_FILE), &bytes)
}

fn market_download_path(state_dir: &Path, id: &str, extension: &str) -> anyhow::Result<PathBuf> {
    if !valid_theme_id(id) || !matches!(extension, "png" | "jpg" | "gif" | "bmp" | "webp") {
        bail!("无效的市场主题下载文件名");
    }
    Ok(state_dir
        .join("dream-skin/market/downloads")
        .join(format!("{id}.{extension}")))

View on GitHub (pinned to f2074595a2)

Solutions

  1. Delete the install-records file; it will be recreated with the current schema
  2. Upgrade CodexPlusPlus if the records were written by a newer version
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at crates/codex-plus-core/src/dream_skin_market.rs:312 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/d1f4118a987638a0. Report an issue: GitHub.