mise manager: treat symbolic selectors (latest/lts/partial) as ranges and support lockfile-only updates #44418
zeitlinger
started this conversation in
Suggest an Idea
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
What
Extend the
misemanager so that symbolic version selectors inmise.toml—latest,lts, and partial forms liketemurin-25— are treated as range constraints and receive Renovate updates against the lockfile, instead of being dropped withskipReason: invalid-value.Current behavior
With
mise.toml:and a committed
mise.lock, Renovate:extract.js:33readsmise.lockand forwardslockedVersion(e.g.24.18.0,temurin-25.0.3+9.0.LTS).currentValuestays"lts"/"latest"/"temurin-25".workers/repository/process/lookup/index.js:276can't parse it as a version →skipReason: "invalid-value"→ no update PR.update-locked.jsis a stub: returnsunsupportedin every branch exceptalready-updated.Net effect: users who use mise's own selector syntax get zero Renovate coverage, even though
mise.lockpins a concrete version that could be bumped safely.Proposal
Treat these selectors as ranges, not opaque strings:
latestltstemurin-2524,24.1For deps matching one of these, use
lockedVersionas compareValue for lookup, apply the selector as anallowedVersionsfilter (theworkarounds:javaLTSVersionspreset already does the LTS filter forjava-version), and emit anupdate-lockfileupdate that only rewritesmise.lock, leavingmise.tomluntouched.Work items
extract.js— recognize selectors per backend; when present with alockedVersion, emitcurrentValue: lockedVersion+ arangeStrategy: "update-lockfile"hint. Preserve the original selector so update-lockfile knows not to touch the toml.update-locked.js— implement real lockfile mutation (currently stub at line 5).core/java-versionandaquaare the common cases;cargo,pipx,npm,go,ubi,gem,dotnet,spmeach have their own conventions.Motivation
Discovered while debugging why
mise.lock's vendor-prefixedlockedVersion(temurin-25.0.3+9.0.LTS) breaks a downstream tool's tracked-deps snapshot in prometheus/client_java. The immediate workaround was to keep pinned concrete versions inmise.toml, but that defeats the point ofmise.lockand mise's own selector semantics. Would be great to have first-class Renovate support.Happy to help scope / prototype once maintainers weigh in on the approach.
Drafted with Claude (Claude Code).
Beta Was this translation helpful? Give feedback.
All reactions