Refs #45216 The object counterpart to `prefer-coerce-array`: `x ?? {}` becomes `coerceObject(x)`. The rule flags a `??` whose default is a bare `{}` literal, so a populated default or an asserted `({} as Foo)` still passes; a `x ?? y ?? {}` chain maps onto `coerceObject(x, y)`. Every hit across `lib/` converted cleanly, so no disable comments were needed.
Renovate can update mise configuration files.
Supported configuration files
Renovate supports all standard mise configuration file patterns:
mise.toml,.mise.tomlmise/config.toml,.mise/config.toml.config/mise.toml,.config/mise/config.toml,.config/mise/mise.toml.rtx.toml(legacy)- Environment-specific variants (e.g.,
mise.production.toml,.mise.dev.toml) - Local variants (e.g.,
mise.local.toml,.mise.local.toml)
Supported tool locations
Renovate supports top level tools and tasks.*.tools keys.
Lock file support
Renovate supports mise lock files (mise.lock).
When a lock file is present:
- Dependencies will have their
lockedVersionextracted from the lock file - Renovate can update lock files when dependencies change
- Lock file maintenance is supported via the
lockFileMaintenanceoption. When themiseversion Renovate runs supports it (see safe mode for how the version is detected), maintenance runsmise lock --bump, which advances fuzzy selectors (e.g.node = "22") to the latest matching version rather than only refreshing existing locked versions.
Renovate recognizes environment-specific lock files:
mise.lock- default lock filemise.local.lock- local configuration lock file, typically ignored alongsidemise.local.tomlmise.{env}.lock- environment-specific lock files (e.g.,mise.production.lock)mise.{env}.local.lock- environment-specific local lock files, typically ignored alongsidemise.{env}.local.toml
For more information about mise lock files, see the mise lock file documentation.
Trust model for lock file updates
Running mise lock can execute repository-defined behavior, so Renovate treats mise lockfile refreshes as an unsafe execution.
Self-hosted administrators must explicitly allow this path by including mise in the global allowedUnsafeExecutions setting.
Because mise lock can execute repository-defined scripts, Renovate treats lockfile refreshes as an unsafe execution and attempts to run mise in safe mode.
If mise does not support safe mode or version detection fails, Renovate blocks all mise operations.
Allowing Unsafe Executions
Self-hosted administrators can permit these operations by adding "mise" to the global allowedUnsafeExecutions configuration.
Once allowed, Renovate runs mise trust before mise lock when a mise.lock file is present. This exposes the trust step in execution logs and defers trust rules to mise.
In particular:
- an existing
mise.lockis required - self-hosted administrators decide whether this unsafe execution is acceptable for their environment
Renovate only updates primary versions
Renovate's mise manager is designed to automatically update the first (primary) version listed for each tool in the mise.toml file.
Secondary or fallback versions require manual updates.
Example
Given a mise.toml entry like:
[tools]
erlang = ["23.3", "22.0"]
Renovate will update "23.3" (the primary version) but will not touch "22.0" (the fallback version).
Why can Renovate only update primary versions?
To maintain consistency and reliability, Renovate opts to only manage the first listed version.
- Fallback versions can often be older versions of a tool that are known to work and are there as a backup.
This follows the same workflow that Renovate's asdf manager uses.
Short names support
Renovate uses the mise registry to resolve tool short names to their appropriate datasource.
Where possible, Renovate will automagically support tools from the mise registry (via mise registry --json).
This means that any tool in the mise registry that has a supported backend (e.g. aqua, github, cargo) should be automatically supported by Renovate.
Adding new tool support
If a tool you need is not yet in the mise registry, add it upstream to mise. Once Renovate syncs its registry data, the tool will be supported automatically, as long as it is in a backend that Renovate supports.
For tools that need a custom datasource mapping (e.g. core tools like node, python), you can create a PR to extend Renovate's mise manager directly.
If you want to add support for other tools' short names to mise, you can create a PR to extend Renovate's asdf manager, which indirectly helps Renovate's mise manager as well.
Even if the tool does not use the asdf backend in the registry, the short names added to the asdf manager will still be used in the mise manager.
This may no longer be necessary now we automagically add support via the tools that the mise registry advertises.
Backends support
Renovate's mise manager supports the following backends:
Limitations
Renovate's mise manager does not support the following tool syntax:
-
asdfandvfoxplugins e.g.asdf:mise-plugins/asdf-yarnorvfox:version-fox/vfox-elixirShort names with backends likeasdf:yarnorvfox:elixirare supported if the short names (yarn,elixir) are supported. -
aquapackages withhttppackage type. However if the short name usingaquabackend is supported by Renovate, it will be updated. e.g.aqua:helm/helmis not supported, buthelmoraqua:helmis supported. -
aquapackages withversion_filter. We don't read the aqua registry itself, so we can't support this feature. If some packages usingversion_filterlikeaqua:biomejs/biomeare not updated or updated incorrectly, setextractVersionin the Renovate config manually like below.{ "packageRules": [ { "matchDepNames": ["aqua:biomejs/biome"], "extractVersion": "cli/(?<version>.+)" } ] } -
Some of
ubibackend tools withtag_regexoption. Thetag_regexoption is used asextractVersion, but the regex engines are not the same between mise and Renovate. If the version is not updated or updated incorrectly, overrideextractVersionmanually in the Renovate config. -
Some of
githubbackend tools withversion_prefixoption. Theversion_prefixoption is converted toextractVersionby escaping special regex characters. If the version is not updated or updated incorrectly, overrideextractVersionmanually in the Renovate config. -
Renovate will prefer the
github:backend over other backends, if using the tool definition from the mise registry