Kuberwastaken/claurst · error

Download failed: HTTP

Error message

Download failed: HTTP {} for {}
Check that this version exists in the releases page.

What it means

The release asset download (archive for the detected target) returned a non-success HTTP status. Usually 404 because the requested version tag has no matching asset for this target; the message's second placeholder is the asset URL that failed.

Solutions

  1. Verify the version exists on the GitHub releases page and has an asset for your target
  2. Omit --version to upgrade to latest, which always has assets
  3. Check for target naming mismatches (e.g. macos-aarch64 vs darwin-arm64) on the releases page
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at src-rust/crates/cli/src/upgrade.rs:211 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Kuberwastaken/claurst@b0637c97ec (2026-09-10). Data as JSON: /api/errors/1b204dd41ca0f1bc. Report an issue: GitHub.

Appendix: source

Thrown at src-rust/crates/cli/src/upgrade.rs:211

    let tag = json
        .get("tag_name")
        .and_then(|v| v.as_str())
        .ok_or_else(|| anyhow!("no tag_name in GitHub API response"))?;
    Ok(tag.trim_start_matches('v').to_string())
}

// ---------------------------------------------------------------------------
// Download
// ---------------------------------------------------------------------------

async fn download_to_file(url: &str, dest: &Path) -> Result<()> {
    let client = reqwest::Client::builder()
        .timeout(Duration::from_secs(120))
        .user_agent(format!("claurst-upgrade/{}", env!("CARGO_PKG_VERSION")))
        .build()?;
    let resp = client.get(url).send().await?;
    if !resp.status().is_success() {
        bail!(
            "Download failed: HTTP {} for {}\n\
             Check that this version exists in the releases page.",
            resp.status(),
            url
        );
    }
    let bytes = resp.bytes().await?;
    std::fs::write(dest, &bytes)?;
    Ok(())
}

// ---------------------------------------------------------------------------
// Extraction (shells out — tar is on every modern system, including Windows 10+)
// ---------------------------------------------------------------------------

fn extract_archive(archive: &Path, dest: &Path, is_zip: bool) -> Result<()> {
    if is_zip {
        // Windows: prefer PowerShell Expand-Archive; fall back to tar -xf.

View on GitHub (pinned to b0637c97ec)