Repository navigation
fix(config): warn for deprecated settings from sources - #10832
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThis PR adds ChangesSettings env metadata and warning flushing
Estimated code review effort: 4 (Complex) | ~45 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryThis PR adds runtime warnings when deprecated settings are explicitly configured—via
Confidence Score: 5/5Safe to merge; changes are limited to deprecation detection and warning timing with no impact on auth, install, or data-path behaviour. The queuing/flushing flow is carefully ordered: warnings collected during early config parsing are reliably drained after the logger and CLI flags are ready, in both the normal and fast-exit paths. The deduplication set in warn_deprecated_now prevents any double-emission. No correctness or security issues were found. src/config/settings.rs — the new queueing infrastructure is the most complex addition; the only note is the misleading name of queue_deprecated_settings. Important Files Changed
Reviews (4): Last reviewed commit: "fix(config): warn for deprecated setting..." | Re-trigger Greptile |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/config/settings.rs`:
- Line 426: Move the deprecation warning calls out of Settings::try_get and into
the startup path after logger::init() so they are actually visible on normal
startup. Specifically, keep warn_deprecated_env_settings and any TOML
deprecation warning logic from running before logging is initialized, and ensure
BASE_SETTINGS does not cache the pre-logger warning side effects by deferring
those warnings until after initialization.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Central YAML (base), Organization UI (inherited)
Review profile: CHILL
Plan: Pro Plus
Run ID: 4903f2bf-119f-4153-ad91-55a7e44c7105
📒 Files selected for processing (2)
build.rssrc/config/settings.rs
c368c8b to
4ac5223
Compare
|
Addressed the review feedback in
Validated with This comment was generated by an AI coding assistant. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/logger.rs`:
- Line 195: Move the queued deprecation warning flush in logger::init() so it
happens before the hook_env::should_exit_early_fast() early return path, because
hook_env::should_exit_early_fast() can call Settings::get() and exit before the
logger is initialized. Keep the fix centered around logger::init() and
Settings::flush_deprecated_warnings() so warnings are emitted even when the
fast-exit path is taken.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Central YAML (base), Organization UI (inherited)
Review profile: CHILL
Plan: Pro Plus
Run ID: 0915931c-0198-4932-895f-508614fd122c
📒 Files selected for processing (3)
build.rssrc/config/settings.rssrc/logger.rs
🚧 Files skipped from review as they are similar to previous changes (1)
- build.rs
4ac5223 to
4676888
Compare
|
Addressed the latest Bugbot feedback in
Validated with This comment was generated by an AI coding assistant. |
4676888 to
ac5d1cf
Compare
|
Addressed the next feedback in
Revalidated with This comment was generated by an AI coding assistant. |
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 ac5d1cf. Configure here.
Entire-Checkpoint: c1a9b6e76aa2
ac5d1cf to
7e4d31a
Compare
|
Addressed the latest Bugbot feedback in
Validated with This comment was generated by an AI coding assistant. |
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.7.1 x -- echo |
23.0 ± 2.7 | 20.1 | 39.7 | 1.00 |
mise x -- echo |
24.1 ± 1.9 | 21.0 | 47.3 | 1.05 ± 0.15 |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.7.1 env |
21.2 ± 1.2 | 18.9 | 27.6 | 1.00 |
mise env |
22.1 ± 1.6 | 19.3 | 28.8 | 1.04 ± 0.09 |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.7.1 hook-env |
22.5 ± 1.7 | 19.6 | 28.4 | 1.00 |
mise hook-env |
25.5 ± 1.5 | 22.6 | 32.5 | 1.13 ± 0.11 |
hook-env measured 13% slower, but the relative uncertainty overlaps the 10% threshold. |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.7.1 ls |
20.7 ± 1.3 | 17.3 | 28.3 | 1.00 |
mise ls |
21.2 ± 1.3 | 17.9 | 25.2 | 1.02 ± 0.09 |
xtasks/test/perf
| Command | mise-2026.7.1 | mise | Variance |
|---|---|---|---|
| install (cached) | 173ms | 173ms | +0% |
| ls (cached) | 63ms | 65ms | -3% |
| bin-paths (cached) | 70ms | 72ms | -2% |
| task-ls (cached) | 135ms | 135ms | +0% |

Summary
Follow-up to #10830.
Tests
This PR was generated by an AI coding assistant.
Note
Medium Risk
Touches startup ordering for every CLI invocation and hook-env fast exit; incorrect timing could miss warnings or emit them before log-level flags apply, but scope is limited to deprecation messaging rather than config values.
Overview
Improves deprecated setting warnings so they fire when users actually set deprecated options in TOML, process environment, or the
MISE_TERA_V1[env]shim—not only during internal migrations.SettingsMetanow carries each setting’senvvar name (codegen fromsettings.toml). Warnings are queued until the logger is ready, then flushed fromlogger::init(after CLI flags are applied) or onhook-envfast exit so dedupe IDs are not consumed too early and messages respect-q/--silent/--log-level.Config parsing scans
[settings](including nested keys likeaqua.registry_url), skips empty/unset values, and treats[env] MISE_TERA_V1as deprecated without flagging unrelatedMISE_*entries in[env]. Process env checks use metadataenvkeys for deprecated settings.hook-envfast path no longer skips when those logging flags are present, so warnings can still run after a minimal logger init.Reviewed by Cursor Bugbot for commit 7e4d31a. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by CodeRabbit
Bug Fixes
New Features