Repository navigation
fix(core): date dotnet, deno and erlang versions for minimum_release_age - #14692
Conversation
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Entire-Checkpoint: 01M58SVTDA547B6NMEQKQ9NW8B
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 1 minute. View limit details
No actionable comments were generated in the recent review. π βΉοΈ Recent review info
π Walkthrough
Merge Risk: βͺ Minimal Β· up to
|
[Medium impact] The PR appears safe to merge; no new actionable issues were found. SummaryThe PR adds release dates to .NET, Deno, and Erlang version lists so
Reviews (4) Β· Last reviewed commit: "fix(core): share one deadline across erl..." Β· Reviewed by Greptile |
β¦g date lookup Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Entire-Checkpoint: 01M58TKKFDSQWAP65ZYR9F83NA
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 802292c. Configure here.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Entire-Checkpoint: 01M58V1H7PHF97NJFFNQYG8RV4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Entire-Checkpoint: 01M58VEK1MEEGRHBYV10MREZEY
β¦14701) <!-- entire-trail-link-start --> https://entire.io/gh/jdx/mise/trails/900 <!-- entire-trail-link-end --> The 24h `minimum_release_age` default only applied to backends that report release dates (aqua, cargo, core, forgejo, gem, github, gitlab, go, npm, packslip, pypi, spm, ubi). Tools from asdf, vfox, conda, dotnet, http and s3 got no cutoff at all, even when they could be dated. Now the default applies to every backend: ```toml # mise.toml: no minimum_release_age configured [tools] "conda:ffmpeg" = "latest" # was: newest version immediately; now: held back 24h ``` A backend can only hold back versions it knows a date for. When `mise install`, `mise upgrade` or `mise use` is about to install a version that has none (see the stacked #14694), mise warns once and names the escape hatch: ``` WARN asdf:tiny@3.1.0 has no release date, so the ... cutoff cannot be checked and it is allowed (exclude it with minimum_release_age_excludes to silence this) ``` So a tool is either held back or flagged, never silently unprotected. Exclude a tool or backend with `minimum_release_age_excludes`, or turn the delay off with `minimum_release_age = "0s"`. **Stacked on #14694.** Merge after it, and ideally after the backends that gain dates (#14691, #14692, #14693, #14695, #14696, #14697). Behavior to know about: a brand-new tool whose only version is under 24h old now resolves to "no versions found", as it already does on aqua and github. Refs #14689 *AI-assisted β Tool: Claude Code; model: anthropic/claude-sonnet-5-5; version: claude-code_2-1-299_agent.* π€ Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Changes default version resolution and install warnings for asdf, vfox, conda, http, and other backends that previously had no release-age cutoff. > > **Overview** > Extends the built-in **24h `minimum_release_age`** so it applies to **all backends**, not only aqua/cargo/core/github/npm-style backends. Backends like `asdf:`, `vfox:`, `conda:`, `http:`, and `dotnet:` now get the same default cutoff when resolving prefixes/`latest` (still subject to `minimum_release_age_excludes` and `minimum_release_age = "0s"`). > > Implementation drops the backend-type whitelist in `install_before.rs` and applies `DEFAULT_MINIMUM_RELEASE_AGE` whenever a tool has a backend and is not excluded. **Versions without release dates are still not filtered**, but installs now **warn once** that the cutoff could not be checked, with a pointer to **`minimum_release_age_excludes`** to silence the message. Docs and `settings.toml` describe the universal default and the warning behavior. > > Tests that rely on the latest-stable fast path disable the default cutoff via a shared `without_default_release_age()` helper; coverage now asserts defaults for previously unsupported backends. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 0bc8326. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Instruction counts
No instruction-count regression above 1%. Only instruction counts gate. Wall clock is shown for context β on identical hardware it moves 4-20% run to run. Measured by tak β instruction-counted CLI benchmarks, stored in this repository's git notes.
|
<!-- entire-trail-link-start --> https://entire.io/gh/jdx/mise/trails/879 <!-- entire-trail-link-end --> ### π Features - **(backend)** serve every backend's version list from the versions host by @jdx in [#14700](#14700) - **(bootstrap)** add --prune-dotfiles to remove orphaned dotfiles by @jdx in [#14681](#14681) - **(config)** add read_json, read_yaml and read_toml template functions by @jdx in [#14705](#14705) - **(config)** apply the default minimum_release_age to every backend by @jdx in [#14701](#14701) - **(dotfiles)** add dotfiles.windows_symlinks to link files instead of copying on Windows by @jdx in [#14682](#14682) - **(dotnet)** add lts and sts version aliases by @jdx in [#14683](#14683) - **(http)** read release dates for http versions by @jdx in [#14696](#14696) - **(install)** add a PowerShell installer at mise.run/powershell by @jdx in [#14660](#14660) - **(task)** add -a as a short alias for tasks --all by @williamsjokvist in [#14674](#14674) - **(vfox)** let plugins report release dates for minimum_release_age by @jdx in [#14695](#14695) ### π Bug Fixes - **(aqua)** find binaries in macOS universal archives by @jdx in [#14665](#14665) - **(aqua)** date github_tag versions so minimum_release_age applies by @jdx in [#14691](#14691) - **(backend)** warn when minimum_release_age cannot check a version's date by @jdx in [#14694](#14694) - **(conda)** report release dates so minimum_release_age applies by @jdx in [#14693](#14693) - **(core)** date dotnet, deno and erlang versions for minimum_release_age by @jdx in [#14692](#14692) - **(core)** date more ruby, python and rust versions so minimum_release_age applies by @jdx in [#14697](#14697) - **(dotfiles)** report copies instead of symlinks for symlink-each on Windows by @jdx in [#14654](#14654) - **(fmt)** keep multiline inline tables intact by @jdx in [#14670](#14670) - **(http)** retry the install rename on Windows when antivirus holds the files by @jdx in [#14703](#14703) - **(install)** extract 7z archives when the data dir contains `..` by @jdx in [#14657](#14657) - **(npm)** run allow_builds scripts despite ignore-scripts in .npmrc by @jdx in [#14661](#14661) - **(npm)** pin aube-lock.yaml so a user's lockfile settings don't break mise lock by @jdx in [#14659](#14659) - **(rust)** list channels when GitHub is unreachable behind a mirror by @jdx in [#14662](#14662) - **(shim)** keep the version tag in the Windows release mise-shim.exe by @jdx in [#14656](#14656) - **(task)** keep task commands working when one task's dir template is broken by @jdx in [#14680](#14680) ### π Refactor - **(schema)** generate the [deps] and [secrets] schema from their types by @jdx in [#14658](#14658) - **(schema)** generate the [daemons] and [daemon_providers] schema from types by @jdx in [#14663](#14663) - **(schema)** generate the [hooks] schema from declaration types by @jdx in [#14666](#14666) - **(schema)** generate the [bootstrap] raw-value schema from declaration types by @jdx in [#14668](#14668) - **(schema)** generate the [tools] option schemas from declaration types by @jdx in [#14669](#14669) - **(schema)** generate the [env] and [vars] schema from declaration types by @jdx in [#14671](#14671) - **(schema)** generate the multi-shape task field schemas from declaration types by @jdx in [#14672](#14672) ### π Documentation - **(config)** add an interactive mise.toml editor and playground by @jdx in [#14673](#14673) - **(config)** hover over keys in every mise.toml example by @jdx in [#14686](#14686) - **(config)** turn the mise.toml reference into a key explorer by @jdx in [#14687](#14687) - **(config)** show a real example for every mise.toml reference key by @jdx in [#14690](#14690) - **(dotnet)** explain how private feeds authenticate by @jdx in [#14679](#14679) - **(schema)** describe the remaining bootstrap keys by @jdx in [#14688](#14688) - **(secrets)** add setup, CI and migration guidance to the fnox page by @jdx in [#14675](#14675) - record the landing-page showreel against current mise so its cache fills by @jdx in [#14685](#14685) ### π¦οΈ Dependency Updates - lock file maintenance by @renovate[bot] in [#14708](#14708) ### π¦ Registry - add release dates to dart, flutter, nim, julia and other http tools by @jdx in [#14698](#14698) ### Ci - **(release)** publish releases staged before install.ps1 existed by @jdx in [#14684](#14684)

https://entire.io/gh/jdx/mise/trails/892
minimum_release_agekeeps undated versions (filter_by_date), so tools whose version list carries no dates silently bypass the cooldown (#14689). The core dotnet, deno and erlang plugins listed no dates at all. They now do:release-dateof the release entry in Microsoft's releases index that first shipped it (runtime-only entries repeat earlier SDKs, so the earliest date wins).denoland/deno.kerl list releases all, dated from the GitHub releases oferlang/otp(OTP-x.ytags). Theerlang_compile=falsepath was already dated.Release listings go through the existing GitHub helpers, so with the versions host enabled (default) this is one cached request per tool and every version is dated. Checked live with
mise ls-remote --json: dotnet 591/591, deno 324/324, erlang 547/547 dated.Limitation: with
use_versions_host = false, the direct GitHub API returns only the newest releases unlessMISE_LIST_ALL_VERSIONSis set. Older versions (225 of 324 for deno, 447 of 547 for erlang, all more than a year old) stay undated. If GitHub can't be reached, a warning is logged and versions stay undated rather than failingls-remote.Tests cover the parsing and that a cutoff hides a too-new version for each plugin.
AI-assisted β Tool: Claude Code; model: anthropic/claude-sonnet-5-5; version: unavailable.
π€ Generated with Claude Code
Note
Medium Risk
Changes remote version listing for three core backends and adds GitHub API usage for deno/erlang, but failures degrade to undated versions with warnings rather than blocking installs.
Overview
Fixes dotnet, deno, and erlang remote version lists so
VersionInfo.created_atis set, allowingminimum_release_ageto filter too-new releases instead of treating every version as undated.dotnet still builds the SDK list from Microsoftβs channel release JSON but now attaches each SDKβs
release-date, keeping the earliest date when the same SDK appears on later runtime-only entries. deno still usesdeno.com/versions.jsonand merges publication dates fromdenoland/denoGitHub releases, with up to five per-version lookups when the bulk list is stale. erlang (kerl path) still useskerl list releases alland dates versions fromerlang/otpreleases under a shared fetch timeout, with the same capped missing-version lookups; GitHub failures log a warning and leave versions undated rather than breakingls-remote.Unit tests cover date parsing, dedupe/sort behavior, and that
VersionInfo::filter_by_datehides versions newer than a cutoff.Reviewed by Cursor Bugbot for commit b4b4243. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by CodeRabbit