registry: remove tools with zero users#9725
Conversation
Greptile SummaryThis PR removes 49 registry shorthand entries for tools with zero recorded users, keeping them accessible via explicit backend syntax. It also updates the CI pipeline to handle deletion-only PRs gracefully by skipping the
Confidence Score: 5/5Safe to merge — all changes are either file deletions or CI guard-rail additions with no risk to production behaviour. The registry deletions are mechanical and reversible; users who depended on the shorthand can switch to the explicit backend syntax. The workflow changes correctly gate test-tool on the presence of added/modified files and handle the skipped state in final-check, so CI remains green for deletion-only PRs without weakening any required checks. No files require special attention. Important Files Changed
Reviews (4): Last reviewed commit: "chore(ci): skip test-tool on deletion-on..." | Re-trigger Greptile |
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.5.3 x -- echo |
22.6 ± 1.0 | 20.4 | 29.1 | 1.00 |
mise x -- echo |
24.1 ± 2.7 | 20.8 | 59.1 | 1.06 ± 0.13 |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.5.3 env |
22.6 ± 1.4 | 19.7 | 30.2 | 1.00 |
mise env |
23.6 ± 3.9 | 20.6 | 62.1 | 1.04 ± 0.18 |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.5.3 hook-env |
23.9 ± 1.8 | 20.1 | 33.2 | 1.00 |
mise hook-env |
24.5 ± 3.6 | 20.7 | 46.8 | 1.02 ± 0.17 |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.5.3 ls |
18.9 ± 1.8 | 16.1 | 35.0 | 1.00 |
mise ls |
19.4 ± 1.1 | 16.2 | 25.0 | 1.02 ± 0.12 |
xtasks/test/perf
| Command | mise-2026.5.3 | mise | Variance |
|---|---|---|---|
| install (cached) | 140ms | 139ms | +0% |
| ls (cached) | 79ms | 78ms | +1% |
| bin-paths (cached) | 88ms | 88ms | +0% |
| task-ls (cached) | 720ms | 708ms | +1% |
These 55 tools have zero recorded users and are being removed from the registry. Users can still install any of them via explicit backend syntax (e.g. mise use aqua:cloudfoundry/uaa-cli, mise use github:exaloop/codon). Removed: bosh-backup-and-restore (bbr), brig, btrace, carp, clarinet, cli53, code-review-graph, codon, concourse, conduit, copper, credhub, datree, dependency-check, djinni, dome, draft, dtm, envcli, esy, glen, grain, inlets, kcctl, ki, kpack (kp), krab, kube-credential-cache, kubefedctl, kubefirst, kubemqctl, kwt, lab, lane, levant, melt, mysql-client, neo4j, opsgenie-lamp, pachctl, psc-package, purerl, redo, rke, sinker, soracom, starboard, sver, terradozer, titan, uaa (uaa-cli), wasm-tools, wasm4, wren (wren-cli), zbctl. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Six tools added this year (mysql-client, dependency-check, neo4j, codon, wasm-tools, code-review-graph) — too soon to judge by user count. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The registry-diff action listed all changed files including deletions, so removing a tool from the registry caused test-tool to fail with 'tools not found'. Filter to added/modified only. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ea95809 to
d870749
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit d870749. Configure here.
When all registry changes are deletions, registry-diff now produces an empty modified_tools list, which previously fell through to the matrix default and ran the entire registry across 8 tranches. Detect this case explicitly and skip test-tool altogether. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
### 🚀 Features - add --inactive option to outdated and upgrade commands for inactive tools by @roele in [#9640](#9640) ### 🐛 Bug Fixes - **(aqua)** resolve bin paths for prefixed v tags by @risu729 in [#9759](#9759) - **(bun)** create bunx alongside bun.exe on Windows install by @JamBalaya56562 in [#9732](#9732) - **(dotnet)** use shared prerelease tool option by @risu729 in [#9720](#9720) - **(node)** use matching node in npm shim by @jdx in [#9749](#9749) - **(task)** resolve bash deterministically on Windows to avoid WSL launcher by @JamBalaya56562 in [#9750](#9750) ### 📚 Documentation - **(secrets)** clarify age strict mode default by @risu729 in [#9737](#9737) - **(tasks)** add bash shebang to conditional-dependencies example by @JamBalaya56562 in [#9747](#9747) - update backend tool option docs by @risu729 in [#9738](#9738) ### 📦 Registry - remove tools with zero users by @jdx in [#9725](#9725) - add scalafmt ([github:scalameta/scalafmt](https://github.com/scalameta/scalafmt)) by @pokir in [#9757](#9757) - remove flarectl by @risu729 in [#9756](#9756) ### Chore - **(release)** strip pre-existing sponsor block before appending canonical one by @jdx in [#9745](#9745) ### New Contributors - @pokir made their first contribution in [#9757](#9757)
## 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`

Summary
mise use aqua:cloudfoundry/uaa-cli,mise use github:exaloop/codon) — only the registry shorthand is being droppedRemoved tools
bosh-backup-and-restore (bbr), brig, btrace, carp, clarinet, cli53, concourse, conduit, copper, credhub, datree, djinni, dome, draft, dtm, envcli, esy, glen, grain, inlets, kcctl, ki, kpack (kp), krab, kube-credential-cache, kubefedctl, kubefirst, kubemqctl, kwt, lab, lane, levant, melt, opsgenie-lamp, pachctl, psc-package, purerl, redo, rke, sinker, soracom, starboard, sver, terradozer, titan, uaa (uaa-cli), wasm4, wren (wren-cli), zbctl
Test plan
registry/at build time, so removing files just drops them from the generated map)🤖 Generated with Claude Code
Note
Medium Risk
Moderate risk because it changes CI gating/conditions for
test-tool, which could accidentally skip registry validation if the diff detection is wrong. Functional impact is limited to workflow behavior and removal of registry entries.Overview
Removes 49
registry/*.tomlentries, dropping their shorthand names from the registry.Updates the registry CI diff logic to treat only added/modified registry files as test candidates and introduces a
skip-test-toolflag so deletion-only PRs skiptest-tooland still pass the aggregateregistry-cigate cleanly.Reviewed by Cursor Bugbot for commit 2991712. Bugbot is set up for automated code reviews on this repo. Configure here.