{"record":{"id":"b53736eab45d568b","repo":"tonhowtf/omniget","slug":"release-de-nao-tem-um-asset-para-este-sistema","errorCode":null,"errorMessage":"release {} de {} nao tem um asset para este sistema","messagePattern":"release (.+?) de (.+?) nao tem um asset para este sistema","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src-tauri/omniget-core/src/core/spicetify.rs","lineNumber":409,"sourceCode":"        .as_array()\n        .ok_or_else(|| anyhow!(\"release de {} sem assets\", repo))?;\n    for asset in assets {\n        let name = asset[\"name\"].as_str().unwrap_or(\"\");\n        if pick(name) {\n            return Ok(ReleaseAsset {\n                tag: tag.clone(),\n                name: name.to_string(),\n                url: asset[\"browser_download_url\"]\n                    .as_str()\n                    .unwrap_or(\"\")\n                    .to_string(),\n                digest: asset[\"digest\"]\n                    .as_str()\n                    .and_then(integrity::parse_github_digest),\n            });\n        }\n    }\n    Err(anyhow!(\n        \"release {} de {} nao tem um asset para este sistema\",\n        tag,\n        repo\n    ))\n}\n\nasync fn download_verified(\n    client: &reqwest::Client,\n    asset: &ReleaseAsset,\n) -> anyhow::Result<Vec<u8>> {\n    let response = client.get(&asset.url).send().await?;\n    if !response.status().is_success() {\n        return Err(anyhow!(\n            \"download de {} falhou: HTTP {}\",\n            asset.name,\n            response.status()\n        ));\n    }","sourceCodeStart":391,"sourceCodeEnd":427,"githubUrl":"https://github.com/tonhowtf/omniget/blob/8600b91f4246848bac346874daa9e61c1fc5677a/src-tauri/omniget-core/src/core/spicetify.rs#L391-L427","documentation":"The release was fetched and has assets, but none matched the `pick` predicate for the current platform — for the Spicetify CLI this means no asset matches the OS/arch suffix produced by `cli_asset_suffix`. The tag and repo are named so the developer knows which release lacked a compatible binary.","triggerScenarios":"`latest_asset` with a `pick` closure (e.g. `|n| n.ends_with(\"linux-amd64.tar.gz\")`) looping over all asset names without a match — unusual Linux arch (ARM), renamed assets in a new release, or a repo that stopped publishing binaries for this platform.","commonSituations":"Running on Linux ARM/ARM64 where Spicetify publishes no CLI binary; a new upstream release renamed its assets; a fork used whose assets differ from upstream.","solutions":["Confirm the current OS/arch has an upstream asset (Spicetify publishes linux-amd64, darwin-amd64/arm64, windows-x64)","On unsupported Linux arch, install spicetify via the system package manager or build from source","Check the release's asset names on GitHub and update the `pick` predicate to match new naming","Pin to an older release tag that still ships the needed asset"],"exampleFix":"// before\nlet suffix = cli_asset_suffix()?; // Err on linux aarch64\n// after\nlet suffix = cli_asset_suffix().unwrap_or_else(|_| {\n    eprintln!(\"Spicetify CLI binary not available for this arch; install via package manager\");\n    std::process::exit(1);\n});","handlingStrategy":"fallback","validationCode":"let target = format!(\"{}-{}\", std::env::consts::OS, std::env::consts::ARCH);\neprintln!(\"looking for asset for {target}; verify upstream publishes one\");","typeGuard":null,"tryCatchPattern":"match cli_asset_suffix() {\n    Ok(s) => latest_asset(&client, repo, move |n| n.ends_with(s)).await,\n    Err(_) => Err(anyhow!(\"unsupported platform — install via package manager\")),\n}","preventionTips":["Check `target_arch`/`target_os` against the upstream release matrix before attempting install","Keep the `pick` predicate in sync with upstream asset naming conventions","For unsupported arches, guide users to the system package manager instead of failing silently"],"tags":["platform","github-releases","asset-matching"],"backgroundTag":"resource-not-found","analyzedSha":"8600b91f4246848bac346874daa9e61c1fc5677a","analyzedAt":"2026-09-12T14:29:19.317Z","contentChangedAt":"2026-09-12T14:29:19.317Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}