Conversation
There was a problem hiding this comment.
Code Review
This pull request refactors the depends field in the tool registry, moving it from a global tool property to a per-backend option to improve install-order scheduling and prevent misuse. The changes span registry configurations, documentation, the JSON schema, and the internal logic for parsing and promoting backend options. A critical issue was identified in src/registry.rs where the presence of bracketed options in the backend string prevents the retrieval of registry-defined defaults, and a fix was proposed to strip these options before lookup.
Greptile SummaryThis PR replaces registry-level
Confidence Score: 5/5The change is safe to merge: removing registry-level depends narrows the scope of auto-injected install dependencies to the correct layers, and test.tools is strictly scoped to mise test-tool with no effect on normal installs. All thirteen registry depends removals are either covered by backend-native dependency declarations (vfox PLUGIN.depends, core:elixir built-in Erlang handling) or intentionally deferred. The new test.tools path in build.rs reads the TOML array directly without any serialization round-trip. The subprocess test path re-reads from the registry, so test.tools is correctly applied in both parallel and in-process modes. No files require special attention; the most sensitive path (src/backend/mod.rs) is a straightforward four-line deletion with no regressions in the surrounding dependency logic. Reviews (7): Last reviewed commit: "Merge branch 'main' into feat/registry-i..." | Re-trigger Greptile |
fc2ebd9 to
0d0ca20
Compare
This comment was marked as outdated.
This comment was marked as outdated.
|
CI is complete on The registry-specific checks are green now:
The remaining red status is from unrelated e2e shards:
These are outside the registry/test.tools path touched here. The logs also show repeated Docker temp cleanup permission errors such as This comment was generated by an AI coding assistant. |
### 🚀 Features - **(aqua)** support registry libc variants by @jdx in [#9652](#9652) - **(bin-paths)** add executable names output by @risu729 in [#9617](#9617) ### 🐛 Bug Fixes - **(aqua)** preserve configured file extensions by @risu729 in [#9611](#9611) - **(aqua)** support registry file links by @risu729 in [#9610](#9610) - **(backend)** reject bare package backend names by @risu729 in [#9608](#9608) - **(backend)** apply inline tool option overrides by @risu729 in [#9306](#9306) - **(backend)** skip versions host for local tool opts by @risu729 in [#9568](#9568) - **(github)** chmod explicit archive bin by @risu729 in [#9609](#9609) - **(install)** skip remote-versions refresh in prefer-offline mode by @jdx in [#9627](#9627) - **(lock)** scope targets to active project root by @risu729 in [#9319](#9319) - **(lockfile)** respect existing platforms during auto-lock by @jdx in [#9621](#9621) - **(pipx)** filter yanked pypi releases by @risu729 in [#9607](#9607) - **(pipx)** declare python as a backend dependency by @jdx in [#9678](#9678) - **(schema)** update refs to $defs in mise-registry-tool.json by @risu729 in [#9671](#9671) - **(task)** terminate parallel siblings on failure via process groups by @jdx in [#9655](#9655) - **(task)** stable MISE_PROJECT_ROOT for monorepo tasks, add MISE_MONOREPO_ROOT by @jdx in [#9657](#9657) - **(trust)** run enter hooks after trusting config by @risu729 in [#9634](#9634) - **(ui)** stop clearing screen for prompts by @jdx in [#9619](#9619) - use /bin/cp on macos by @pdehlke in [#9656](#9656) ### 🚜 Refactor - **(aqua)** store aqua var defaults as strings by @risu729 in [#9645](#9645) - **(config)** support structured TOML values in registry backend options by @risu729 in [#9584](#9584) - **(deps)** remove serde_derive dependency by @risu729 in [#9670](#9670) - **(deps)** remove anyhow dependency by @risu729 in [#9661](#9661) - **(deps)** use std::sync::LazyLock instead of once_cell::Lazy by @risu729 in [#9668](#9668) - **(schema)** generate task schema from mise schema by @risu729 in [#9581](#9581) - **(schema)** reuse task props with unevaluatedProperties by @risu729 in [#9582](#9582) - **(schema)** reuse registry common types by @risu729 in [#9648](#9648) - **(schema)** reuse plugin script config by @risu729 in [#9647](#9647) - **(schema)** use $defs in schema files by @risu729 in [#9646](#9646) ### 📚 Documentation - **(node)** add tips for enabling node idiomatic by @fu050409 in [#9675](#9675) ### 🧪 Testing - **(cli)** remove nondeterministic tool depends assertion by @risu729 in [#9633](#9633) - **(e2e)** pin uv to 0.11.8 around astral-sh/uv#19278 by @jdx in [#9618](#9618) - **(e2e)** wait for docker env cleanup by @risu729 in [#9631](#9631) - **(zig)** use official zig instead of mach mirror by @jdx in [#9659](#9659) ### 📦️ Dependency Updates - fall through to hash check when providers have no outputs by @jdx in [#9622](#9622) - bump Cargo.lock by @jdx in [#9625](#9625) ### 📦 Registry - remove registry depends by @risu729 in [#9571](#9571) - add code-review-graph (pipx:code-review-graph) by @chautruonglong in [#9673](#9673) ### Chore - **(ci)** split large registry test-tool changes by @risu729 in [#9628](#9628) - **(ci)** make perf script robust to runner noise by @jdx in [#9635](#9635) - **(ci)** skip hyperfine comments without permission by @risu729 in [#9629](#9629) ### New Contributors - @chautruonglong made their first contribution in [#9673](#9673) - @pdehlke made their first contribution in [#9656](#9656) ## 📦 Aqua Registry Updates ### New Packages (5) - [`anthropics/anthropic-cli`](https://github.com/anthropics/anthropic-cli) - [`crates.io/wasmi_cli`](https://github.com/wasmi-labs/wasmi) - [`openclaw/gogcli`](https://github.com/openclaw/gogcli) - `racket-lang.org/racket-minimal` - [`runs-on/cli`](https://github.com/runs-on/cli) ### Updated Packages (13) - [`UpCloudLtd/upcloud-cli`](https://github.com/UpCloudLtd/upcloud-cli) - [`aristocratos/btop`](https://github.com/aristocratos/btop) - [`dprint/dprint`](https://github.com/dprint/dprint) - [`j178/prek`](https://github.com/j178/prek) - [`jdx/hk`](https://github.com/jdx/hk) - [`jdx/mise`](https://github.com/jdx/mise) - [`jdx/usage`](https://github.com/jdx/usage) - [`jreleaser/jreleaser`](https://github.com/jreleaser/jreleaser) - [`jreleaser/jreleaser/standalone`](https://github.com/jreleaser/jreleaser) - [`pnpm/pnpm`](https://github.com/pnpm/pnpm) - [`suzuki-shunsuke/cmdx`](https://github.com/suzuki-shunsuke/cmdx) - [`suzuki-shunsuke/ghir`](https://github.com/suzuki-shunsuke/ghir) - [`twpayne/chezmoi`](https://github.com/twpayne/chezmoi)
Summary
mainafter registry: remove bashly asdf fallback #9578 and registry: use github backend for rebar #9576 landed, then fast-forwarded over the latestmainlockfile maintenance merge.dependsfrom generatedRegistryTool, the registry schema, and backend dependency expansion.test.toolssupport for registry tests. This is consumed only bymise test-tool; it does not affect normal installs.Why registry
dependsis not neededRegistry
dependsmixed unrelated concerns: install ordering, runtime companions, and tools needed only for registry tests. That made shorthand registry entries apply dependencies too broadly across every backend.The remaining valid dependency paths are covered elsewhere:
PLUGIN.depends; mise already reads those through the vfox backend.depends, but rebar was the only registry entry still relying on that path, and registry: use github backend for rebar #9576 moved it togithub:erlang/rebar3. New asdf plugins are not being added to the registry.test.cmdbelong intest.tools, which is consumed only bymise test-tooland does not affect normal installs.Registry file changes (
registry/*.toml)depends = ["java"]; addedtest.tools = ["java"]because the vendored vfox metadata notes Java 11+ andsdkmanagershells out tojava.depends = ["erlang"];core:elixirhandles Erlang as a backend dependency.depends = ["java"]; its Linux registry asset is a native executable, and the Docker probe passed without adding Java.depends = ["java"]; addedtest.tools = ["java"]because the Gradle launcher requiresjavaforgradle -V.depends = ["kotlin"]; addedtest.tools = ["kotlin"]after Docker/registry CI showedkscript --versionfails without Kotlin.depends = ["java"]; its registry test remains disabled.depends = ["kubectl"];mise x kubecolor -- kubecolor --kubecolor-versionpassed in the e2e Docker image with nokubectlon PATH, so notest.toolsentry is needed.depends = ["python"]; addedtest.tools = ["python"]because the vendored vfox post-install hook creates a venv withpython3/python, and the test should not rely on system Python.depends = ["python"]; addedtest.tools = ["python"]because the aquapipx.pyzlauncher uses#!/usr/bin/env python3.depends = ["erlang"]; #9576 moved this registry entry togithub:erlang/rebar3; addedtest.tools = ["erlang"]becauserebar3 --versionneeds the Erlang runtime.depends = ["java"]; the conda backend installs OpenJDK in the package environment and the Docker probe passed without registrytest.tools.depends = ["java"]; no registry test command is present.depends = ["kubectl"];tridentctl version --clientpassed in Docker withoutkubectl.vfox notes
vfox-android-sdkis vendored incrates/vfox/embedded-plugins/; its metadata says Java 11+ is required, and the installedsdkmanagerlauncher checksJAVA_HOME/java. Its post-install hook only uses common shell utilities (mv,mkdir,rm,chmod), which are not registry tools.vfox-pipenvis vendored incrates/vfox/embedded-plugins/; its post-install hook explicitly searches forpython3/python, creates a venv, then runs pip. Utility shell usage such aspwd,mkdir, andchmodis intentionally ignored.vfox-gradleis not vendored undercrates/vfox/embedded-plugins/; the registry test still needs Java because the Gradle launcher itself invokesjava.Pipenv note
mise-plugins/vfox-pipenv/pull/1must be merged forpipenvto work properly through the vfox backend. GitHub Actions and the e2e image currently have Python available, but the registry should not rely on system Python:PLUGIN.dependsonly declares plugin execution order, so without a managed Python declaration pipenv falls back to whatever system Python is available.Validation
taplo fmt --check registry/android-sdk.toml registry/gradle.toml registry/pipenv.toml registry/pipx.toml registry/kscript.toml registry/rebar.tomlgit diff --checkghcr.io/jdx/mise:e2emise x <tool> -- <test.cmd>forandroid-sdk,google-java-format,gradle,kscript,kubecolor,pipenv,pipx,sbt, andtridentctl