feat: change idiomatic_version_file to default disabled#6501
Conversation
… disabled - Remove deprecation warning for idiomatic version files - Change idiomatic_version_file_enable_tools default from None to empty set [] - Hide and deprecate idiomatic_version_file and idiomatic_version_file_disable_tools settings - Update documentation to clarify that idiomatic version files are now disabled by default - Simplify load_idiomatic_files logic to only check enable_tools list - Remove warn_about_idiomatic_version_files function - This change is required for 2025.10.0 release 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
There was a problem hiding this comment.
Pull Request Overview
This PR changes the default behavior for idiomatic version files in mise by disabling them by default for the 2025.10.0 release, removing associated deprecation warnings, and simplifying the configuration logic.
- Remove deprecation warning for idiomatic version files and associated logic
- Change
idiomatic_version_file_enable_toolsdefault fromNoneto empty set[] - Hide and deprecate legacy idiomatic version file settings
Reviewed Changes
Copilot reviewed 5 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/config/settings.rs | Fix assignment to use Some(false) for optional boolean setting |
| src/config/mod.rs | Remove deprecation warning function and simplify idiomatic file loading logic |
| settings.toml | Update default values, hide deprecated settings, and add documentation |
| schema/mise.json | Remove default value for deprecated setting and add default for new setting |
| completions/_mise | Minor formatting change to completion file header |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| settings = sb.load()?; | ||
| if !settings.legacy_version_file { | ||
| settings.idiomatic_version_file = false; | ||
| settings.idiomatic_version_file = Some(false); |
There was a problem hiding this comment.
This assignment suggests idiomatic_version_file is now an Option<bool> type, but the change from false to Some(false) indicates a type mismatch that may cause compilation issues. Verify that the field type has been updated accordingly in the Settings struct definition.
| use walkdir::WalkDir; | ||
|
|
||
| use crate::backend::ABackend; | ||
| use crate::cli::version; |
There was a problem hiding this comment.
These new imports appear to be unused after removing the deprecation warning logic. The version import was previously used in the removed warn_about_idiomatic_version_files function.
| use crate::cli::version; |
Update idiomatic_version_file_enable_tools docs to reference the Idiomatic Version Files section in the configuration documentation instead of the GitHub discussion.
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.9.25 x -- echo |
19.3 ± 0.2 | 18.9 | 20.2 | 1.11 ± 0.02 |
mise x -- echo |
17.4 ± 0.3 | 16.9 | 21.3 | 1.00 |
✅ Performance improvement for x -- echo is 11% |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.9.25 env |
18.8 ± 0.4 | 18.3 | 23.8 | 1.12 ± 0.02 |
mise env |
16.8 ± 0.2 | 16.4 | 17.4 | 1.00 |
✅ Performance improvement for env is 12% |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.9.25 hook-env |
18.5 ± 0.4 | 17.9 | 25.9 | 1.12 ± 0.03 |
mise hook-env |
16.6 ± 0.3 | 16.1 | 20.0 | 1.00 |
✅ Performance improvement for hook-env is 12% |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2025.9.25 ls |
16.4 ± 0.2 | 16.0 | 17.3 | 1.13 ± 0.02 |
mise ls |
14.5 ± 0.2 | 14.2 | 16.4 | 1.00 |
✅ Performance improvement for ls is 13% |
xtasks/test/perf
| Command | mise-2025.9.25 | mise | Variance |
|---|---|---|---|
| install (cached) | 166ms | ✅ 102ms | +62% |
| ls (cached) | 63ms | 62ms | +1% |
| bin-paths (cached) | 69ms | 68ms | +1% |
| task-ls (cached) | 463ms | 460ms | +0% |
✅ Performance improvement: install cached is 62%
Update e2e tests that rely on idiomatic version files to explicitly enable them since they are now disabled by default: - test_deno: enable for deno - test_node_slow: enable for node - test_java: enable for java - test_python_precompiled: enable for python, then disable to test override - test_terraform: enable for terraform
### 📦 Registry - add code by @TyceHerrman in [#6492](#6492) ### 🚀 Features - change idiomatic_version_file to default disabled by @jdx in [#6501](#6501) ### 🐛 Bug Fixes - **(self-update)** add missing functions to self_update stub by @jdx in [#6502](#6502) - **(set)** allow --prompt flag to work with `mise set` by @jdx in [#6485](#6485) ### 📚 Documentation - **(hooks)** clarify pre/post-install hooks description. by @minusfive in [#6497](#6497) - remove link to issue by @jdx in [e13d980](e13d980) ### 🧪 Testing - **(e2e)** remove deprecated MISE_LEGACY_VERSION_FILE assertions by @jdx in [#6505](#6505) ### New Contributors - @minusfive made their first contribution in [#6497](#6497) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Bumps project to v2025.10.0, updates changelog, packaging/docs, and completion spec filenames. > > - **Release/Versioning**: > - Bump version to `2025.10.0` in `Cargo.toml`, `Cargo.lock`, `default.nix`, `packaging/rpm/mise.spec`. > - **Documentation**: > - Update `README.md` quickstart version output. > - Add `2025.10.0` entry to `CHANGELOG.md` with registry, features, fixes, docs, tests, and contributors. > - **Shell Completions**: > - Update cached spec filenames to `usage__usage_spec_mise_2025_10_0.spec` in `completions/_mise`, `completions/mise.bash`, `completions/mise.fish`.} > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 28930cf. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: mise-en-dev <release@mise.jdx.dev>
The tools are now disabled by default in the new mise version: jdx/mise#6501
The tools are now disabled by default in the new mise version: jdx/mise#6501
Summary
This PR removes the idiomatic version file deprecation warning and changes
idiomatic_version_file_enable_toolsto default to disabled (empty set) for the 2025.10.0 release.BREAKING: this is breaking change that make mise no longer read from files like .node-version or .ruby-version by default. This has been planned for 6 months with warnings. See #4345 for more information.
Changes
warn_about_idiomatic_version_filesfunction)idiomatic_version_file_enable_toolsdefault fromNoneto empty set[]idiomatic_version_fileandidiomatic_version_file_disable_toolssettingsload_idiomatic_fileslogic to only check enable_tools listRelated
Test plan
🤖 Generated with Claude Code
Note
Disables idiomatic version file parsing by default and switches to an explicit per-tool allowlist via
settings.idiomatic_version_file_enable_tools, removing the legacy warning and updating schema/settings/tests accordingly.warn_about_idiomatic_version_filesand related wiring.load_idiomatic_filesto only read tools insettings.idiomatic_version_file_enable_tools; no files loaded when list is empty.settings.idiomatic_version_file_enable_toolsnow defaults to[](disabled by default) and usesBTreeSet<String>; add docs.idiomatic_version_fileandidiomatic_version_file_disable_tools; adjust handling in settings loader.schema/mise.jsonto reflect new defaults and deprecations.bun,deno,java,node,python,ruby,terraform,tiny); add disable case for python override.#compdef mise).Written by Cursor Bugbot for commit 2010fb0. This will update automatically on new commits. Configure here.