Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR migrates over 200 tools from using the UBI (Universal Binary Installer) backend to the GitHub backend. The migration updates tool configuration entries to use the standardized GitHub backend infrastructure.
- Replaces "ubi:" prefixes with "github:" for repository-based tool installations
- Removes experimental feature flags for GitHub/GitLab backends in the Rust code
- Streamlines one yamlscript backend configuration by removing deprecated extraction options
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| src/backend/github.rs | Removes experimental feature gate for github/gitlab backends |
| registry.toml | Updates 200+ tool entries from ubi to github backend with standardized configuration |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| yamlscript.backends = [ | ||
| "aqua:yaml/yamlscript", | ||
| "ubi:yaml/yamlscript[matching_regex=^ys,extract_all=true]", | ||
| "ubi:yaml/yamlscript[matching_regex=^ys]", |
There was a problem hiding this comment.
This line still uses the ubi backend while the line above was changed to github. For consistency, this should also be updated to use the github backend like the other tools in this migration.
| "ubi:yaml/yamlscript[matching_regex=^ys]", | |
| "github:yaml/yamlscript[matching_regex=^ys]", |
| balena.description = "The balena CLI is a Command Line Interface for balenaCloud or openBalena" | ||
| balena.backends = [ | ||
| "ubi:balena-io/balena-cli[extract_all=true,bin_path=bin]", | ||
| "github:balena-io/balena-cli[bin_path=bin]", |
There was a problem hiding this comment.
The original configuration had 'extract_all=true' which was removed. Verify that the github backend can properly extract and locate the binary with just 'bin_path=bin' for this tool, as the extraction behavior may differ between backends.
| "github:balena-io/balena-cli[bin_path=bin]", | |
| "github:balena-io/balena-cli[bin_path=bin,extract_all=true]", |
| kscript.description = "Scripting enhancements for Kotlin" | ||
| kscript.backends = [ | ||
| "ubi:kscripting/kscript[bin_path=bin,extract_all=true]", | ||
| "github:kscripting/kscript[bin_path=bin]", |
There was a problem hiding this comment.
Similar to balena-cli, the 'extract_all=true' option was removed. Confirm that the github backend can properly handle the binary extraction for kscript with only 'bin_path=bin' specified.
Reverted the following tools back to ubi backend: - bosh-backup-and-restore - clusterawsadm - elm - glab - helm-diff - mdbook-linkcheck - opsgenie-lamp - tusd These tools were migrated to github backend but need to remain on ubi. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.9.5 x -- echo |
18.7 ± 0.5 | 18.1 | 26.5 | 1.00 |
mise x -- echo |
19.0 ± 0.8 | 18.3 | 29.7 | 1.02 ± 0.05 |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.9.5 env |
18.2 ± 0.5 | 17.5 | 25.8 | 1.00 |
mise env |
18.3 ± 0.7 | 17.7 | 25.2 | 1.01 ± 0.05 |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.9.5 hook-env |
18.1 ± 0.4 | 17.3 | 19.5 | 1.00 |
mise hook-env |
18.6 ± 0.7 | 17.3 | 25.0 | 1.02 ± 0.05 |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.9.5 ls |
16.5 ± 0.4 | 15.7 | 19.8 | 1.00 |
mise ls |
16.5 ± 0.8 | 15.7 | 25.1 | 1.00 ± 0.05 |
xtasks/test/perf
| Command | mise-2025.9.5 | mise | Variance |
|---|---|---|---|
| install (cached) | 165ms | ✅ 102ms | +61% |
| ls (cached) | 62ms | 62ms | +0% |
| bin-paths (cached) | 66ms | 67ms | -1% |
| task-ls (cached) | 470ms | 479ms | -1% |
✅ Performance improvement: install cached is 61%
| balena.description = "The balena CLI is a Command Line Interface for balenaCloud or openBalena" | ||
| balena.backends = [ | ||
| "ubi:balena-io/balena-cli[extract_all=true,bin_path=bin]", | ||
| "github:balena-io/balena-cli[bin_path=bin]", |
There was a problem hiding this comment.
Bug: Archive Extraction Issue Post-Migration
The extract_all=true parameter was removed for balena-cli and kscript during the ubi to github backend migration. This change might prevent proper archive extraction, potentially causing installation failures or leaving the tools in a non-functional state.
Additional Locations (1)
## Summary - remove unsupported `exe` options from GitHub/GitLab registry backend options - use `bin = "solc"` for Solidity because the selected Linux release asset is named `solc-static-linux`, but users expect the command to be installed as `solc` - set Sourcery `format = "tar.gz"` because the Linux release asset is gzip-compressed even though the uploaded filename ends in `.tar.xz` - keep the newly discovered registry command checks as commented `# test = ...` lines instead of active tests - rebase onto current `main`; tools removed upstream by #9725 are no longer part of this PR ## Popularity No new registry tools are added in this PR. This only updates existing registry entries, so new-tool popularity data is not applicable. `flarectl` is no longer part of this PR. #9756 has been merged to remove it from the registry because the current `cloudflare/cloudflare-go` releases no longer publish static binaries and mise versions shows very low usage. ## CI status As of 2026-05-10, the rebased PR head is `7117c21f1be582f0f4ed1e836498b7a7561a7020`. A previous CI run passed at the old head `891419410da51649a24c16f2d6015eef7f2aeef6`. The branch has since been rebased onto current `main`, the CI-token commits were dropped because they are already upstream, and the registry tests added by this PR were commented out. ## Changed tools | Tool | Opts/config added | Test status | Linux install works | Notes | | --- | --- | --- | --- | --- | | `astro` | none | existing `astro version` test kept | yes, existing test covers install | removed unsupported `exe = "astro"` only | | `babashka` | none | existing `bb --version` test kept | yes, existing test covers install | removed unsupported `exe = "bb"` only | | `codefresh` | none | no active test | latest no; prior `0.89.6` yes | `1.1.4` installs but `codefresh version` fails with `Cannot find module '/snapshot/cli/node_modules/generator-function/require.mjs'`; `0.89.6` runs `codefresh version` and prints `client version: 0.89.6` | | `coursier` | none | commented `cs --help` kept | yes, local `mise x coursier@latest -- cs --help` passed | removed unsupported `exe = "cs"` | | `databricks-cli` | none | existing `databricks --version` test kept | yes, existing test covers install | removed unsupported `exe = "databricks"` only | | `depot` | none | existing `depot --version` test kept | yes, existing test covers install | removed unsupported `exe = "depot"` only | | `doppler` | none | existing `doppler --version` test kept | yes, existing test covers install | removed unsupported `exe = "doppler"` only | | `dynatrace-monaco` | none | commented `monaco version` kept | yes, local `mise x dynatrace-monaco@latest -- monaco version` passed | removed unsupported `exe = "monaco"` | | `flatc` | none | existing `flatc --version` test kept | yes, existing test covers install | removed unsupported `exe = "flatc"` only | | `fluttergen` | none | existing `fluttergen --version` test kept | yes, existing test covers install | removed unsupported `exe = "fluttergen"` only | | `gam` | none | commented `gam version` kept | yes, local `mise x gam@latest -- gam version` passed | removed unsupported `exe = "gam"` | | `glab` | none | existing `glab version` test kept | yes, existing test covers install | removed unsupported `exe = "glab"` from both platform backends | | `graphite` | none | existing `gt --version` test kept | yes, existing test covers install | removed unsupported `exe = "gt"` only | | `jwtui` | none | commented `jwtui --version` kept | yes, local `mise x jwtui@latest -- jwtui --version` passed | removed unsupported `exe = "jwtui"` | | `kube-controller-tools` | none | commented `controller-gen --version` kept | yes, local `mise x kube-controller-tools@latest -- controller-gen --version` passed | removed unsupported `exe = "controller-gen"` | | `localstack` | none | existing `localstack --version` test kept | yes, existing test covers install | removed unsupported `exe = "localstack"` only | | `micronaut` | none | commented `mn --version` kept | yes, local `mise x micronaut@latest -- mn --version` passed | removed unsupported `exe = "mn"` | | `odin` | none | commented `odin version` kept | yes, local `mise x odin@latest -- odin version` passed | removed unsupported `exe = "odin"` | | `openbao` | none | commented `bao version` kept | yes, local `mise x openbao@latest -- bao version` passed | removed unsupported `exe = "bao"` | | `protoc-gen-js` | none | commented `protoc-gen-js --version` kept | yes, local `mise x protoc-gen-js@latest -- protoc-gen-js --version` passed | removed unsupported `exe = "protoc-gen-js"` | | `purescript` | none | commented `purs --version` kept | yes, local `mise x purescript@latest -- purs --version` passed | removed unsupported `exe = "purs"` | | `railway` | none | existing `railway --version` test kept | yes, existing test covers install | removed unsupported `exe = "railway"` only | | `schemacrawler` | `depends = ["java"]` | commented `schemacrawler.sh --version` kept | yes with Java explicit | `mise x schemacrawler@latest -- schemacrawler.sh --version` did not put `java` on PATH locally; `mise x java@26 schemacrawler@latest -- schemacrawler.sh --version` passed | | `signadot` | none | existing `signadot --version` test kept | yes, existing test covers install | removed unsupported `exe = "signadot"` only | | `soft-serve` | none | commented `soft --version` kept | yes, local `mise x soft-serve@latest -- soft --version` passed | removed unsupported `exe = "soft"` | | `solidity` | `bin = "solc"` | commented `solc --version` kept | yes, local `mise x solidity@latest -- solc --version` passed | default selected Linux asset name is `solc-static-linux`; `bin = "solc"` installs the expected `solc` command | | `sourcery` | `format = "tar.gz"` | commented `which sourcery` kept | yes, local `mise x sourcery@latest -- which sourcery` passed | Linux asset filename says `.tar.xz`, but upstream workflow writes it with gzip compression | | `starknet-foundry-sncast` | none | commented `sncast --version` kept | yes, local `mise x starknet-foundry-sncast@latest -- sncast --version` passed | removed unsupported `exe = "sncast"` | | `starknet-foundry` | none | commented `snforge --version` kept | yes, local `mise x starknet-foundry@latest -- snforge --version` passed | removed unsupported `exe = "snforge"` | | `swiftgen` | none | no active test | left as-is | non-Linux tool in practice; current GitHub release contains a Mach-O universal `swiftgen` binary, so Linux execution is not expected to work | | `tfswitch` | none | commented `tfswitch --version` kept | yes, local `mise x tfswitch@latest -- tfswitch --version` passed | removed unsupported `exe = "tfswitch"` | | `transifex` | none | commented `tx --version` kept | yes, local `mise x transifex@latest -- tx --version` passed | removed unsupported `exe = "tx"` | | `tsuru` | none | commented `tsuru version --help` kept | yes, local `mise x tsuru@latest -- tsuru version --help` passed | removed unsupported `exe = "tsuru"` | | `weave-gitops` | none | no active test | latest no; prior `0.38.0` and `0.37.0` yes | latest `0.39.1-rc.1` has no release assets, but older Linux assets still work and `gitops version` reports the expected versions | ## Rebased-away tools - `carp`, `dtm`, and `kpack` were removed upstream by #9725, so this branch no longer touches them. - I still checked `carp` with explicit backend syntax: `github:carp-lang/Carp@0.6.0` fails because the latest release has no assets, while `github:carp-lang/Carp@0.5.5 -- carp --help` installs and runs. - `dtm` is left alone because it is non-Linux-only in practice and has already been removed upstream. - `flarectl` was removed from this PR; #9756 has been merged. ## Codefresh history `codefresh` started as an asdf-only registry entry in the initial cross-backend registry work. It was later migrated away from asdf by adding `ubi:codefresh-io/cli[exe=codefresh]` in #3202, then migrated from `ubi:` to `github:` in #6232. Current `1.x` Linux binaries are broken at runtime, but older `0.89.6` still works through the GitHub backend, so I did not remove it here. ## Sourcery release format The current Sourcery Ubuntu release workflow sets `FILENAME="sourcery-${TAG}-${SUFFIX}.tar.xz"` and then creates it with `tar -zcvf`, which produces gzip-compressed tar content despite the `.tar.xz` filename: https://github.com/krzysztofzablocki/Sourcery/blob/master/.github/workflows/release_ubuntu.yml#L43-L47 I did not find a Sourcery issue or PR that explicitly calls out the gzip-vs-`.tar.xz` mismatch when searching their issues/PRs for `tar.xz`, `gzip`, and `tar.gz`. The closest relevant release context is: - release automation PR: krzysztofzablocki/Sourcery#1254 - artifact structure issue: krzysztofzablocki/Sourcery#1255 - Linux support PR: krzysztofzablocki/Sourcery#1188 ## Solidity binary name The current Solidity release publishes the Linux CLI asset as `solc-static-linux`: https://github.com/argotorg/solidity/releases/tag/v0.8.35 Without `bin = "solc"`, the GitHub backend exposes the downloaded asset name as the command name. The `bin` option renames/symlinks the installed binary to the expected CLI command, `solc`, which matches Solidity docs and existing user expectations. ## Testing - `mise run build` - `cargo test --all-features cli::args::backend_arg::tests::test_opts` - `target/debug/mise registry | rg '^(flarectl|carp|dtm|kpack)\b' || true` - local `target/debug/mise x ...` checks for all commented test commands listed in the table - version-specific checks for `codefresh@1.1.4`, `codefresh@0.89.6`, `weave-gitops@0.39.1-rc.1`, `weave-gitops@0.38.0`, `weave-gitops@0.37.0`, `github:carp-lang/Carp@0.6.0`, and `github:carp-lang/Carp@0.5.5`
No description provided.