feat(vfox): add rolling release support with checksum tracking#7757
feat(vfox): add rolling release support with checksum tracking#7757
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds support for rolling releases (like "nightly") with checksum-based update detection to enable proper version tracking and updates for channels that maintain the same version string but change content over time.
Changes:
- Add checksum tracking infrastructure for rolling releases, including storage in
.mise.checksumfiles and comparison logic - Preserve channel names ("nightly", "stable", "beta", etc.) during
mise up --bumpoperations instead of converting them to semver - Create embedded vfox-neovim plugin with rolling release support and switch neovim's primary backend to use it
Reviewed changes
Copilot reviewed 16 out of 16 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/versions_host.rs | Add default field initialization to VersionInfo struct |
| src/toolset/outdated_info.rs | Add rolling version checksum comparison and preserve channel names in check_semver_bump |
| src/toolset/install_state.rs | Add checksum storage/retrieval functions for tracking rolling release changes |
| src/plugins/core/rust.rs | Mark rust's nightly/beta/stable channels as rolling releases |
| src/backend/vfox.rs | Store checksums after installation and pass rolling/checksum fields from vfox plugins |
| src/backend/ubi.rs | Use default field initialization for VersionInfo structs |
| src/backend/mod.rs | Add rolling release detection and checksum comparison methods to Backend trait |
| src/backend/github.rs | Use default field initialization for VersionInfo structs |
| src/backend/aqua.rs | Use default field initialization for VersionInfo structs |
| registry.toml | Switch neovim's primary backend from aqua to vfox |
| crates/vfox/src/vfox.rs | Add InstallResult struct to return sha256 checksum from install operations |
| crates/vfox/src/hooks/available.rs | Add dist_tags, rolling, and checksum fields to AvailableVersion |
| crates/vfox/embedded-plugins/vfox-neovim/metadata.lua | Add vfox plugin metadata for neovim |
| crates/vfox/embedded-plugins/vfox-neovim/hooks/pre_install.lua | Implement download URL construction and checksum fetching for neovim releases |
| crates/vfox/embedded-plugins/vfox-neovim/hooks/env_keys.lua | Configure PATH environment variable for installed neovim |
| crates/vfox/embedded-plugins/vfox-neovim/hooks/available.lua | Fetch neovim releases from GitHub with rolling release and checksum support |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| Some("latest".to_string()) | ||
| ); | ||
| // Channel names like "nightly", "stable", "beta" should be preserved | ||
| std::assert_eq!( |
There was a problem hiding this comment.
Use assert_eq! instead of std::assert_eq!. The std:: prefix is unnecessary and not idiomatic in Rust test code.
| elseif tag == "stable" then | ||
| table.insert(dist_tags, "stable") |
There was a problem hiding this comment.
The 'stable' tag handling should also fetch checksums and mark as rolling if consistent with 'nightly' behavior. Currently, 'stable' releases won't have checksum tracking for update detection, which may be inconsistent with the PR's stated goal of supporting rolling releases.
Adds support for rolling releases like "nightly" with checksum-based update detection: - Add dist_tags, rolling, and checksum fields to vfox AvailableVersion - Add InstallResult struct to return sha256 from vfox install - Add rolling and checksum fields to VersionInfo for backends - Add is_rolling_version_outdated() to detect updates via checksum - Add checksum storage in install_state for tracking installed versions - Fix check_semver_bump to preserve channel names (nightly, stable, etc) - Create vfox-neovim embedded plugin with rolling release support - Update registry to use vfox:neovim as primary backend This fixes the issue where `mise up --bump` would incorrectly convert "nightly" to "0" instead of preserving the channel name. Rolling releases can now be properly detected as outdated by comparing checksums. Fixes #7750 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2ceb31c to
fc69d6f
Compare
|
bugbot run |
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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.
…dated Rolling versions like rust nightly/beta/stable are marked as rolling=true but don't provide checksums. Previously, is_rolling_version_outdated() returned true when no checksum was available, causing unnecessary reinstalls on every mise up. Now, if no checksum is available, we return false (not outdated) since we cannot detect changes. Users can still force updates with `mise install rust@nightly` or `mise up --force`. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.1.4 x -- echo |
21.4 ± 1.0 | 20.1 | 28.9 | 1.00 |
mise x -- echo |
22.3 ± 0.8 | 20.5 | 27.5 | 1.04 ± 0.06 |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.1.4 env |
20.6 ± 1.1 | 19.3 | 32.0 | 1.00 |
mise env |
21.9 ± 1.0 | 20.1 | 28.0 | 1.06 ± 0.07 |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.1.4 hook-env |
20.8 ± 0.9 | 19.2 | 29.9 | 1.00 |
mise hook-env |
22.0 ± 1.0 | 20.5 | 28.8 | 1.06 ± 0.07 |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.1.4 ls |
19.5 ± 0.6 | 18.2 | 25.2 | 1.00 |
mise ls |
20.8 ± 1.1 | 18.9 | 28.7 | 1.07 ± 0.07 |
xtasks/test/perf
| Command | mise-2026.1.4 | mise | Variance |
|---|---|---|---|
| install (cached) | 116ms | 116ms | +0% |
| ls (cached) | 70ms | 73ms | -4% |
| bin-paths (cached) | 75ms | 79ms | -5% |
| task-ls (cached) | 286ms | 297ms | -3% |
### 🚀 Features - **(complete)** add PowerShell completion support by @jdx in [#7746](#7746) - **(release)** add LLM-generated prose summary to release notes by @jdx in [#7737](#7737) - **(vfox)** add semver Lua module for version sorting by @jdx in [#7739](#7739) - **(vfox)** add rolling release support with checksum tracking by @jdx in [#7757](#7757) - dry filetask parsing and validation by @makp0 in [#7738](#7738) ### 🐛 Bug Fixes - **(completions)** bump usage-cli to 2.13.1 for PowerShell support by @jdx in [#7756](#7756) - schema missing env required string variant by @vadimpiven in [#7734](#7734) - validate unknown fields in filetask headers by @makp0 in [#7733](#7733) - disable schemacrawler test by @jdx in [#7743](#7743) - replace double forward slash with single slash in get_task_lists by @collinstevens in [#7744](#7744) - require LLM for release notes and include aqua section by @jdx in [#7745](#7745) - preserve {{ version }} in tool options during config load by @jdx in [#7755](#7755) ### 📚 Documentation - add documentation URL structure guidance to CLAUDE.md by @jdx in [#7740](#7740) - add pitchfork promotion by @jdx in [#7747](#7747) ### 📦️ Dependency Updates - relax version constraints and update dependencies by @jdx in [#7736](#7736) - lock file maintenance by @renovate[bot] in [#7749](#7749) ### Chore - bump xx to 2.3.1 by @jdx in [#7753](#7753) ### New Contributors - @collinstevens made their first contribution in [#7744](#7744) - @makp0 made their first contribution in [#7738](#7738) - @vadimpiven made their first contribution in [#7734](#7734) ## 📦 Aqua Registry Updates #### New Packages (2) - [`F1bonacc1/process-compose`](https://github.com/F1bonacc1/process-compose) - [`kkinnear/zprint`](https://github.com/kkinnear/zprint) #### Updated Packages (1) - [`theryangeary/choose`](https://github.com/theryangeary/choose)
## [2026.1.5](https://github.com/jdx/mise/compare/v2026.1.4..v2026.1.5) - 2026-01-19 ### 🚀 Features - **(complete)** add PowerShell completion support by @jdx in [#7746](jdx/mise#7746) - **(release)** add LLM-generated prose summary to release notes by @jdx in [#7737](jdx/mise#7737) - **(vfox)** add semver Lua module for version sorting by @jdx in [#7739](jdx/mise#7739) - **(vfox)** add rolling release support with checksum tracking by @jdx in [#7757](jdx/mise#7757) - dry filetask parsing and validation by @makp0 in [#7738](jdx/mise#7738) ### 🐛 Bug Fixes - **(completions)** bump usage-cli to 2.13.1 for PowerShell support by @jdx in [#7756](jdx/mise#7756) - schema missing env required string variant by @vadimpiven in [#7734](jdx/mise#7734) - validate unknown fields in filetask headers by @makp0 in [#7733](jdx/mise#7733) - disable schemacrawler test by @jdx in [#7743](jdx/mise#7743) - replace double forward slash with single slash in get_task_lists by @collinstevens in [#7744](jdx/mise#7744) - require LLM for release notes and include aqua section by @jdx in [#7745](jdx/mise#7745) - preserve {{ version }} in tool options during config load by @jdx in [#7755](jdx/mise#7755) ### 📚 Documentation - add documentation URL structure guidance to CLAUDE.md by @jdx in [#7740](jdx/mise#7740) - add pitchfork promotion by @jdx in [#7747](jdx/mise#7747) ### 📦️ Dependency Updates - relax version constraints and update dependencies by @jdx in [#7736](jdx/mise#7736) - lock file maintenance by @renovate[bot] in [#7749](jdx/mise#7749) ### Chore - bump xx to 2.3.1 by @jdx in [#7753](jdx/mise#7753) ### New Contributors - @collinstevens made their first contribution in [#7744](jdx/mise#7744) - @makp0 made their first contribution in [#7738](jdx/mise#7738) - @vadimpiven made their first contribution in [#7734](jdx/mise#7734) ## [2026.1.4](https://github.com/jdx/mise/compare/v2026.1.3..v2026.1.4) - 2026-01-17 ### 🚀 Features - **(conda)** add dependency locking for reproducible installations by @jdx in [#7708](jdx/mise#7708) - **(http)** add JSON filter syntax for version extraction by @jdx in [#7707](jdx/mise#7707) - **(http)** add version_expr support and Tera templating by @jdx in [#7723](jdx/mise#7723) - **(task)** add [monorepo].config_roots for explicit config root listing by @jdx in [#7705](jdx/mise#7705) - **(task)** support env vars in task dependencies by @jdx in [#7724](jdx/mise#7724) ### 🐛 Bug Fixes - **(conda)** fix hardcoded library paths in conda packages by @jdx in [#7713](jdx/mise#7713) - **(env)** avoid venv/go backend deadlock during env resolution by @stk0vrfl0w in [#7696](jdx/mise#7696) - **(locked)** exempt tool stubs from lockfile requirements by @jdx in [#7729](jdx/mise#7729) - **(python)** sort CPython versions at end of ls-remote output by @jdx in [#7721](jdx/mise#7721) - **(task)** resolve remote task files before display and validation commands by @yannrouillard in [#7681](jdx/mise#7681) - **(task)** support monorepo paths in `mise tasks deps` by @chadxz in [#7699](jdx/mise#7699) - **(task)** resolve all monorepo path hints in deps by @chadxz in [#7698](jdx/mise#7698) ### 📚 Documentation - remove outdated roadmap page by @jdx in [#7726](jdx/mise#7726) ### ⚡ Performance - **(task)** fix task-ls cached performance regression by @jdx in [#7716](jdx/mise#7716) ### 📦️ Dependency Updates - replace dependency @tsconfig/node22 with @tsconfig/node24 by @renovate[bot] in [#7618](jdx/mise#7618) ### 📦 Registry - add aqua backend for smithy by @jdx in [#7661](jdx/mise#7661) - remove low-usage asdf plugins by @jdx in [#7701](jdx/mise#7701) - disable mirrord test by @jdx in [#7703](jdx/mise#7703) - use vfox-dotnet as default backend by @jdx in [#7704](jdx/mise#7704) - use vfox-lua as default lua backend by @jdx in [#7706](jdx/mise#7706) - add vfox backend for redis by @jdx in [#7709](jdx/mise#7709) - use vfox-postgres as default postgres backend by @jdx in [#7710](jdx/mise#7710) - use github backend for kotlin by @jdx in [#7711](jdx/mise#7711) - add vfox backend for leiningen by @jdx in [#7714](jdx/mise#7714) - use pipx backend for meson by @jdx in [#7712](jdx/mise#7712) - use github backend for crystal by @jdx in [#7715](jdx/mise#7715) - use conda backend for sqlite by @jdx in [#7718](jdx/mise#7718) - use conda backend for make by @jdx in [#7719](jdx/mise#7719) - swift-package-list use github backend by @jdx in [#7720](jdx/mise#7720) ### Chore - increase macos release build timeout to 90 minutes by @jdx in [#7725](jdx/mise#7725) ### New Contributors - @yannrouillard made their first contribution in [#7681](jdx/mise#7681) - @stk0vrfl0w made their first contribution in [#7696](jdx/mise#7696) ## [2026.1.3](https://github.com/jdx/mise/compare/v2026.1.2..v2026.1.3) - 2026-01-16 ### 🚀 Features - **(s3)** add S3 backend for private artifact storage by @jdx in [#7668](jdx/mise#7668) - **(upgrade)** use installed_tool completer for mise upgrade by @jdx in [#7670](jdx/mise#7670) - **(upgrade)** add --exclude flag to mise upgrade command by @jdx in [#7669](jdx/mise#7669) - add no hooks and no env flags by @aacebedo in [#7560](jdx/mise#7560) ### 🐛 Bug Fixes - **(backend)** allow upgrading vfox backend tools with symlinked installations by @TyceHerrman in [#7012](jdx/mise#7012) - **(backend)** reject architecture mismatches in asset selection by @jdx in [#7672](jdx/mise#7672) - **(backend)** canonicalize symlink target before installs check by @jdx in [#7671](jdx/mise#7671) - **(npm)** avoid circular dependency when npm is in dependencies by @AprilNEA in [#7644](jdx/mise#7644) - **(self-update)** skip update when already at latest version by @jdx in [#7666](jdx/mise#7666) - fall back to GITHUB_TOKEN for github.com by @subdigital in [#7667](jdx/mise#7667) - GitHub token fallback by @subdigital in [#7673](jdx/mise#7673) - inherit tasks from parent configs in monorepos by @chadxz in [#7643](jdx/mise#7643) ### 📚 Documentation - **(contributing)** update registry examples by @scop in [#7660](jdx/mise#7660) - **(contributing)** update registry PR title rule by @scop in [#7663](jdx/mise#7663) - remove 404 link from contributing by @opswole in [#7692](jdx/mise#7692) - clarify that backend plugins should sort the version list by @ofalvai in [#7680](jdx/mise#7680) ### 📦️ Dependency Updates - update ghcr.io/jdx/mise:alpine docker digest to 11f659e by @renovate[bot] in [#7685](jdx/mise#7685) - update ghcr.io/jdx/mise:copr docker digest to 3adaea4 by @renovate[bot] in [#7686](jdx/mise#7686) - update ghcr.io/jdx/mise:deb docker digest to 8bbca53 by @renovate[bot] in [#7687](jdx/mise#7687) - update ghcr.io/jdx/mise:rpm docker digest to de81415 by @renovate[bot] in [#7688](jdx/mise#7688) - update mcr.microsoft.com/devcontainers/rust:1 docker digest to 282e805 by @renovate[bot] in [#7690](jdx/mise#7690) - update rust docker digest to bed2d7f by @renovate[bot] in [#7691](jdx/mise#7691) ### 📦 Registry - add oh-my-posh by @scop in [#7659](jdx/mise#7659) - add bibtex-tidy (npm:bibtex-tidy) by @3w36zj6 in [#7677](jdx/mise#7677) - remove misconfigured bin_path option from kscript by @risu729 in [#7693](jdx/mise#7693) ### New Contributors - @AprilNEA made their first contribution in [#7644](jdx/mise#7644) - @opswole made their first contribution in [#7692](jdx/mise#7692) - @subdigital made their first contribution in [#7673](jdx/mise#7673) - @aacebedo made their first contribution in [#7560](jdx/mise#7560)
## [2026.1.5](https://github.com/jdx/mise/compare/v2026.1.4..v2026.1.5) - 2026-01-19 ### 🚀 Features - **(complete)** add PowerShell completion support by @jdx in [#7746](jdx/mise#7746) - **(release)** add LLM-generated prose summary to release notes by @jdx in [#7737](jdx/mise#7737) - **(vfox)** add semver Lua module for version sorting by @jdx in [#7739](jdx/mise#7739) - **(vfox)** add rolling release support with checksum tracking by @jdx in [#7757](jdx/mise#7757) - dry filetask parsing and validation by @makp0 in [#7738](jdx/mise#7738) ### 🐛 Bug Fixes - **(completions)** bump usage-cli to 2.13.1 for PowerShell support by @jdx in [#7756](jdx/mise#7756) - schema missing env required string variant by @vadimpiven in [#7734](jdx/mise#7734) - validate unknown fields in filetask headers by @makp0 in [#7733](jdx/mise#7733) - disable schemacrawler test by @jdx in [#7743](jdx/mise#7743) - replace double forward slash with single slash in get_task_lists by @collinstevens in [#7744](jdx/mise#7744) - require LLM for release notes and include aqua section by @jdx in [#7745](jdx/mise#7745) - preserve {{ version }} in tool options during config load by @jdx in [#7755](jdx/mise#7755) ### 📚 Documentation - add documentation URL structure guidance to CLAUDE.md by @jdx in [#7740](jdx/mise#7740) - add pitchfork promotion by @jdx in [#7747](jdx/mise#7747) ### 📦️ Dependency Updates - relax version constraints and update dependencies by @jdx in [#7736](jdx/mise#7736) - lock file maintenance by @renovate[bot] in [#7749](jdx/mise#7749) ### Chore - bump xx to 2.3.1 by @jdx in [#7753](jdx/mise#7753) ### New Contributors - @collinstevens made their first contribution in [#7744](jdx/mise#7744) - @makp0 made their first contribution in [#7738](jdx/mise#7738) - @vadimpiven made their first contribution in [#7734](jdx/mise#7734) ## [2026.1.4](https://github.com/jdx/mise/compare/v2026.1.3..v2026.1.4) - 2026-01-17 ### 🚀 Features - **(conda)** add dependency locking for reproducible installations by @jdx in [#7708](jdx/mise#7708) - **(http)** add JSON filter syntax for version extraction by @jdx in [#7707](jdx/mise#7707) - **(http)** add version_expr support and Tera templating by @jdx in [#7723](jdx/mise#7723) - **(task)** add [monorepo].config_roots for explicit config root listing by @jdx in [#7705](jdx/mise#7705) - **(task)** support env vars in task dependencies by @jdx in [#7724](jdx/mise#7724) ### 🐛 Bug Fixes - **(conda)** fix hardcoded library paths in conda packages by @jdx in [#7713](jdx/mise#7713) - **(env)** avoid venv/go backend deadlock during env resolution by @stk0vrfl0w in [#7696](jdx/mise#7696) - **(locked)** exempt tool stubs from lockfile requirements by @jdx in [#7729](jdx/mise#7729) - **(python)** sort CPython versions at end of ls-remote output by @jdx in [#7721](jdx/mise#7721) - **(task)** resolve remote task files before display and validation commands by @yannrouillard in [#7681](jdx/mise#7681) - **(task)** support monorepo paths in `mise tasks deps` by @chadxz in [#7699](jdx/mise#7699) - **(task)** resolve all monorepo path hints in deps by @chadxz in [#7698](jdx/mise#7698) ### 📚 Documentation - remove outdated roadmap page by @jdx in [#7726](jdx/mise#7726) ### ⚡ Performance - **(task)** fix task-ls cached performance regression by @jdx in [#7716](jdx/mise#7716) ### 📦️ Dependency Updates - replace dependency @tsconfig/node22 with @tsconfig/node24 by @renovate[bot] in [#7618](jdx/mise#7618) ### 📦 Registry - add aqua backend for smithy by @jdx in [#7661](jdx/mise#7661) - remove low-usage asdf plugins by @jdx in [#7701](jdx/mise#7701) - disable mirrord test by @jdx in [#7703](jdx/mise#7703) - use vfox-dotnet as default backend by @jdx in [#7704](jdx/mise#7704) - use vfox-lua as default lua backend by @jdx in [#7706](jdx/mise#7706) - add vfox backend for redis by @jdx in [#7709](jdx/mise#7709) - use vfox-postgres as default postgres backend by @jdx in [#7710](jdx/mise#7710) - use github backend for kotlin by @jdx in [#7711](jdx/mise#7711) - add vfox backend for leiningen by @jdx in [#7714](jdx/mise#7714) - use pipx backend for meson by @jdx in [#7712](jdx/mise#7712) - use github backend for crystal by @jdx in [#7715](jdx/mise#7715) - use conda backend for sqlite by @jdx in [#7718](jdx/mise#7718) - use conda backend for make by @jdx in [#7719](jdx/mise#7719) - swift-package-list use github backend by @jdx in [#7720](jdx/mise#7720) ### Chore - increase macos release build timeout to 90 minutes by @jdx in [#7725](jdx/mise#7725) ### New Contributors - @yannrouillard made their first contribution in [#7681](jdx/mise#7681) - @stk0vrfl0w made their first contribution in [#7696](jdx/mise#7696) ## [2026.1.3](https://github.com/jdx/mise/compare/v2026.1.2..v2026.1.3) - 2026-01-16 ### 🚀 Features - **(s3)** add S3 backend for private artifact storage by @jdx in [#7668](jdx/mise#7668) - **(upgrade)** use installed_tool completer for mise upgrade by @jdx in [#7670](jdx/mise#7670) - **(upgrade)** add --exclude flag to mise upgrade command by @jdx in [#7669](jdx/mise#7669) - add no hooks and no env flags by @aacebedo in [#7560](jdx/mise#7560) ### 🐛 Bug Fixes - **(backend)** allow upgrading vfox backend tools with symlinked installations by @TyceHerrman in [#7012](jdx/mise#7012) - **(backend)** reject architecture mismatches in asset selection by @jdx in [#7672](jdx/mise#7672) - **(backend)** canonicalize symlink target before installs check by @jdx in [#7671](jdx/mise#7671) - **(npm)** avoid circular dependency when npm is in dependencies by @AprilNEA in [#7644](jdx/mise#7644) - **(self-update)** skip update when already at latest version by @jdx in [#7666](jdx/mise#7666) - fall back to GITHUB_TOKEN for github.com by @subdigital in [#7667](jdx/mise#7667) - GitHub token fallback by @subdigital in [#7673](jdx/mise#7673) - inherit tasks from parent configs in monorepos by @chadxz in [#7643](jdx/mise#7643) ### 📚 Documentation - **(contributing)** update registry examples by @scop in [#7660](jdx/mise#7660) - **(contributing)** update registry PR title rule by @scop in [#7663](jdx/mise#7663) - remove 404 link from contributing by @opswole in [#7692](jdx/mise#7692) - clarify that backend plugins should sort the version list by @ofalvai in [#7680](jdx/mise#7680) ### 📦️ Dependency Updates - update ghcr.io/jdx/mise:alpine docker digest to 11f659e by @renovate[bot] in [#7685](jdx/mise#7685) - update ghcr.io/jdx/mise:copr docker digest to 3adaea4 by @renovate[bot] in [#7686](jdx/mise#7686) - update ghcr.io/jdx/mise:deb docker digest to 8bbca53 by @renovate[bot] in [#7687](jdx/mise#7687) - update ghcr.io/jdx/mise:rpm docker digest to de81415 by @renovate[bot] in [#7688](jdx/mise#7688) - update mcr.microsoft.com/devcontainers/rust:1 docker digest to 282e805 by @renovate[bot] in [#7690](jdx/mise#7690) - update rust docker digest to bed2d7f by @renovate[bot] in [#7691](jdx/mise#7691) ### 📦 Registry - add oh-my-posh by @scop in [#7659](jdx/mise#7659) - add bibtex-tidy (npm:bibtex-tidy) by @3w36zj6 in [#7677](jdx/mise#7677) - remove misconfigured bin_path option from kscript by @risu729 in [#7693](jdx/mise#7693) ### New Contributors - @AprilNEA made their first contribution in [#7644](jdx/mise#7644) - @opswole made their first contribution in [#7692](jdx/mise#7692) - @subdigital made their first contribution in [#7673](jdx/mise#7673) - @aacebedo made their first contribution in [#7560](jdx/mise#7560)
Summary
Adds support for rolling releases like "nightly" and "stable" with checksum-based update detection.
rollingandchecksumfields to vfoxAvailableVersionInstallResultstruct to return sha256 from vfox installrollingandchecksumfields toVersionInfofor backendsis_rolling_version_outdated()to detect updates via checksum comparisoninstall_statefor tracking installed versionscheck_semver_bumpto preserve channel names (nightly, stable, beta, etc)vfox:mise-plugins/vfox-neovimProblem
When using
mise up --bumpwith a rolling release like "nightly", the version would incorrectly be converted to "0" (from the semver parsing of the latest version like "0.10.0"). This made it impossible to maintain rolling release subscriptions.There was no way for
mise upto detect when a rolling release had been updated, since the version string remains the same (e.g., "nightly").Solution
Preserve channel names: Added explicit list of known channel names that should never be converted during
--bumpoperationsChecksum tracking: Rolling releases now store their SHA256 checksum after installation. When checking for updates, the stored checksum is compared against the latest remote checksum to detect changes.
vfox-neovim plugin: Created a vfox plugin at https://github.com/mise-plugins/vfox-neovim that properly handles
nightlyandstablereleases with checksum-based update detection.Test plan
mise run test:unit)mise --cd crates/vfox run test)mise use neovim@nightlyandmise up neovimFixes #7750
🤖 Generated with Claude Code
Note
Introduces rolling-release support end-to-end with checksum-based update detection and channel preservation.
rollingandchecksumto vfoxAvailableVersionand backendVersionInfo; propagate in aqua/github/forgejo/gitlab/ubi/vfox backendsInstallResultreturningsha256; store/read checksums viainstall_stateto detect updates for rolling versions--bump(e.g.,nightly,stable,beta)vfox-neovimplugin (hooks:available,pre_install,env_keys) with platform-aware assets and checksum fetching; update registry to usevfox:mise-plugins/vfox-neovimWritten by Cursor Bugbot for commit 65e2251. This will update automatically on new commits. Configure here.