Skip to content

Conversation

@jdx
Copy link
Owner

@jdx jdx commented Nov 28, 2025

Summary

  • Fixed resolve_lock_info_from_github_release to combine api_url (base URL) with asset_pattern (filename) to produce full download URLs
  • Previously, lockfile entries for tools like bun had incomplete URLs like bun-darwin-aarch64.zip instead of https://github.com/oven-sh/bun/releases/download/bun-v1.3.3/bun-darwin-aarch64.zip

Test plan

  • Ran mise lock bun and verified the generated URLs are now complete
  • Verified all unit tests pass (cargo test)

🤖 Generated with Claude Code


Note

Combine release base URL with asset filename when resolving GitHub release info; lockfile now contains full Bun download URLs.

  • Backend:
    • Update resolve_lock_info_from_github_release in src/backend/mod.rs to construct full asset URLs by combining api_url with the rendered asset_pattern for {os}/{arch}.
  • Lockfile:
    • Replace Bun platform URLs in mise.lock with full GitHub release URLs (e.g., bun-darwin-aarch64.zip -> https://github.com/oven-sh/bun/releases/.../bun-darwin-aarch64.zip).

Written by Cursor Bugbot for commit 0a82b1c. This will update automatically on new commits. Configure here.

…URLs

The resolve_lock_info_from_github_release method was using asset_pattern
directly as the URL, but for some tools (like bun), asset_pattern is just
the filename while api_url contains the base URL. This resulted in lockfile
entries with incomplete URLs like "bun-darwin-aarch64.zip" instead of the
full download URL.

Now combines api_url and asset_pattern to produce the correct full URL:
https://github.com/oven-sh/bun/releases/download/bun-v1.3.3/bun-darwin-aarch64.zip

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Copilot AI review requested due to automatic review settings November 28, 2025 19:06
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes incomplete URL generation in GitHub release lockfiles by properly combining the base API URL with the asset filename pattern. Previously, lockfile entries contained only the asset filename (e.g., bun-darwin-aarch64.zip) instead of the complete download URL (e.g., https://github.com/oven-sh/bun/releases/download/bun-v1.3.3/bun-darwin-aarch64.zip).

  • Renamed asset_url to asset_name to reflect that it initially contains only the filename
  • Added logic to combine api_url (base URL) with asset_name to produce complete download URLs
  • Falls back to asset_name when api_url is not available

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +1029 to +1032
let asset_url = match (&release_info.api_url, &asset_name) {
(Some(base_url), Some(name)) => Some(format!("{}/{}", base_url, name)),
_ => asset_name.clone(),
};
Copy link

Copilot AI Nov 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The fallback logic _ => asset_name.clone() will return just the filename when api_url is None, which was the original problem this PR aims to fix. Consider handling the case where api_url is missing more explicitly, either by returning an error or logging a warning, rather than silently falling back to an incomplete URL.

Copilot uses AI. Check for mistakes.
@jdx jdx enabled auto-merge (squash) November 28, 2025 19:14
@github-actions
Copy link

xtasks/test/perf

Command mise-2025.11.10 mise Variance
install (cached) 106ms 105ms +0%
ls (cached) 63ms 63ms +0%
bin-paths (cached) 70ms 70ms +0%
task-ls (cached) 418ms 432ms -3%

@jdx jdx merged commit e593334 into main Nov 28, 2025
57 of 60 checks passed
@jdx jdx deleted the fix/lockfile-github-release-url branch November 28, 2025 19:46
jdx pushed a commit that referenced this pull request Nov 30, 2025
### 🚀 Features

- **(backend)** add filter_bins option to github/gitlab backends by
@risu729 in [#7105](#7105)
- **(ci)** auto-close PRs from non-maintainers by @jdx in
[#7108](#7108)
- **(conda)** add conda backend for installing packages from conda-forge
by @jdx in [#7139](#7139)
- **(github)** add rename_exe option and switch elm, opam, yt-dlp from
ubi by @jdx in [#7140](#7140)
- **(install)** add --locked flag for strict lockfile mode by @jdx in
[#7098](#7098)
- **(lock)** implement cross-platform lockfile generation by @jdx in
[#7091](#7091)
- **(lockfile)** add options field for tool artifact identity by @jdx in
[#7092](#7092)
- **(lockfile)** add env field and local lockfile support by @jdx in
[#7099](#7099)
- **(lockfile)** add URL support for deno, go, and zig backends by @jdx
in [#7112](#7112)
- **(lockfile)** add URL support for vfox backend by @jdx in
[#7114](#7114)
- **(lockfile)** add multi-platform checksums without downloading
tarballs by @jdx in [#7113](#7113)

### 🐛 Bug Fixes

- **(backend)** allow platform-specific strip_components by @risu729 in
[#7106](#7106)
- **(backend)** prefer path root for bin path if it contains an
executable by @risu729 in [#7151](#7151)
- **(bash)** avoid deactivate error on (no)unset PROMPT_COMMAND by @scop
in [#7096](#7096)
- **(ci)** use updatedAt instead of createdAt for stale PR detection by
@jdx in [#7109](#7109)
- **(github)** search subdirectories for executables in
discover_bin_paths by @jdx in
[#7138](#7138)
- **(lockfile)** combine api_url with asset_pattern for GitHub release
URLs by @jdx in [#7111](#7111)

### 🚜 Refactor

- **(lock)** simplify lockfile to always use array format by @jdx in
[#7093](#7093)
- **(lockfile)** use compact inline table format by @jdx in
[#7141](#7141)

### 📚 Documentation

- **(gitlab)** document rename_exe option also for gitlab backend by
@risu729 in [#7149](#7149)
- **(lockfile)** update documentation for recent lockfile changes by
@jdx in [#7107](#7107)
- **(node)** use config_root in _.path for pnpm example by @risu729 in
[#7146](#7146)
- **(registry)** add github/gitlab backends to the preferred backends
list by @risu729 in [#7148](#7148)
- **(registry)** add url mappings for all backends by @risu729 in
[#7147](#7147)

### 📦️ Dependency Updates

- update docker/metadata-action digest to c299e40 by @renovate[bot] in
[#7101](#7101)
- update ghcr.io/jdx/mise:alpine docker digest to 693c5f6 by
@renovate[bot] in [#7102](#7102)
- update ghcr.io/jdx/mise:deb docker digest to 9985cab by @renovate[bot]
in [#7104](#7104)
- update ghcr.io/jdx/mise:copr docker digest to 564d8e1 by
@renovate[bot] in [#7103](#7103)
- update rust crate ubi to 0.8.4 by @risu729 in
[#7154](#7154)

### 📦 Registry

- add aqua backend as primary for e1s by @jdx in
[#7115](#7115)
- add gem backend for bashly by @jdx in
[6af6607](6af6607)
- switch 1password from asdf to vfox backend by @jdx in
[#7116](#7116)
- add vfox backend for bfs by @jdx in
[#7126](#7126)
- add github backend for btrace by @jdx in
[#7129](#7129)
- add github backend for cf by @jdx in
[#7131](#7131)
- add vfox backend for bpkg by @jdx in
[#7130](#7130)
- switch apollo-ios from asdf to github backend by @jdx in
[#7118](#7118)
- add vfox backend for chromedriver by @jdx in
[#7134](#7134)
- switch superhtml, vespa-cli, xcsift from ubi to github backend by @jdx
in [#7137](#7137)
- add vfox backend for clickhouse by @jdx in
[#7136](#7136)
- switch chicken to vfox plugin by @jdx in
[#7135](#7135)
- switch chezscheme from asdf to vfox backend by @jdx in
[#7132](#7132)
- add vfox backend for carthage by @jdx in
[#7133](#7133)
- switch azure-functions-core-tools from asdf to vfox backend by @jdx in
[#7128](#7128)
- switch aapt2 to vfox backend by @jdx in
[#7117](#7117)
- switch ant to vfox backend by @jdx in
[#7119](#7119)
- switch asciidoctorj from asdf to vfox backend by @jdx in
[#7121](#7121)
- switch awscli-local to pipx backend by @jdx in
[#7120](#7120)
- add omnictl by @risu729 in
[#7145](#7145)
- remove pnpm asdf plugin from fallback by @risu729 in
[#7143](#7143)
- switch tanzu to github backend by @jdx in
[#7124](#7124)
- switch android-sdk to vfox plugin by @jdx in
[#7127](#7127)
- add vfox backend for ag (The Silver Searcher) by @jdx in
[#7122](#7122)

### Chore

- **(registry)** ignore deleted tools in test-tool workflow by @risu729
in [#7081](#7081)
- **(release)** show registry section last in changelog by @jdx in
[#7156](#7156)
- update mise.lock with checksums by @jdx in
[71e9123](71e9123)
- disable cancel-in-progress for test workflow on main branch by
@risu729 in [#7152](#7152)

## 📦 Aqua Registry Updates

#### Updated Packages (1)

- [`orf/gping`](https://github.com/orf/gping)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants