Conversation
Owner
|
Bugbot run |
f2754df to
c2f993e
Compare
Owner
|
bugbot run |
c2f993e to
b3365df
Compare
## Why? When running a monorepo task like `mise run //parent/child:task`, tools defined in intermediate parent directories (e.g., `parent/mise.toml`) were not being inherited by child tasks. Only tools from the monorepo root were inherited. ## How? Created a reproduction at [chadxz/mise-monorepo-tasks-tool-inheritance](https://github.com/chadxz/mise-monorepo-tasks-tool-inheritance) demonstrating the bug, then traced through the code to find where config files are loaded for monorepo tasks. **src/toolset/builder.rs**: Added `with_config_files()` method to ToolsetBuilder, allowing custom config files to be used instead of `config.config_files`. This enables monorepo tasks to use config files from their directory hierarchy. **src/task/task_context_builder.rs**: `build_toolset_for_task` now loads config files from the task's directory using `load_config_hierarchy_from_dir(task_dir)` and passes them to ToolsetBuilder via `with_config_files()`. This ensures tools are inherited from intermediate parents and ensures MISE_*_VERSION environment variable overrides are applied. **src/task/task_tool_installer.rs**: `collect_tools_from_config_file` now loads the full config hierarchy so tools from parent directories are installed. Caching behavior is retained using the existing `tool_request_set_cache` to avoid re-parsing individual config files when multiple tasks share config files in their hierarchies. **src/config/mod.rs**: Made `ConfigMap` type crate-public for use by ToolsetBuilder. **e2e/tasks/test_task_monorepo_tool_inheritance_intermediate**: New test validating intermediate parent tool inheritance. **e2e/tasks/test_task_monorepo_env_version_override**: New test validating MISE_*_VERSION env overrides work for monorepo tasks.
b3365df to
e89874f
Compare
Contributor
Author
|
I ran Cursor Bugbot on this myself again as well as reviews from Gemini 3 Pro and GPT 5.2-High and Opus 4.5. Happy to do anything further. |
jdx
pushed a commit
that referenced
this pull request
Jan 13, 2026
### 🐛 Bug Fixes - **(backend)** filter pre-release versions with latest + install_before by @koh-sh in [#7631](#7631) - **(docs)** formatting in configuration hierarchy section by @jonathanagustin in [#7638](#7638) - **(npm)** migrate npm publish to OIDC trusted publishing by @jdx in [#7607](#7607) - **(registry)** correct checkmake version test pattern by @jdx in [#7632](#7632) - **(release)** handle empty grep result in aqua-registry changelog by @jdx in [f45b4c6](f45b4c6) - **(self-update)** self-update fails across year boundary due to semver mismatch by @jdx in [#7611](#7611) - **(tasks)** fix tool inheritance from intermediate parents by @chadxz in [#7637](#7637) - add `-test` to VERSION_REGEX prerelease filter by @belgio99 in [#7647](#7647) ### 📚 Documentation - **(tasks)** remove documentation for unimplemented features by @turbocrime in [#7599](#7599) - update `mise aliases` references to `mise tool-alias` by @muzimuzhi in [#7615](#7615) - use call operator in PowerShell profile example by @shina1024 in [#7639](#7639) - replace ASCII .pub key with binary .gpg for signed-by on Ubuntu/Debian by @gmalinowski in [#7649](#7649) ### 🛡️ Security - **(security)** prevent code execution from untrusted fork in registry-comment workflow by @jdx in [4a2441e](4a2441e) ###◀️ Revert - Revert "fix(release): handle empty grep result in aqua-registry changelog" by @jdx in [522ffdc](522ffdc) - Revert "chore(release): include manually updated aqua-registry entries in the changelog " by @jdx in [1ebb943](1ebb943) ### 📦️ Dependency Updates - update ghcr.io/jdx/mise:alpine docker digest to fbfffcf by @renovate[bot] in [#7619](#7619) - lock file maintenance by @renovate[bot] in [#7646](#7646) ### 📦 Registry - add hatoo/oha tool by @jylenhof in [#7633](#7633) ### Chore - **(registry)** fix registry comment workflow by @risu729 in [#7554](#7554) - **(release)** include manually updated aqua-registry entries in the changelog by @risu729 in [#7603](#7603) ### New Contributors - @belgio99 made their first contribution in [#7647](#7647) - @gmalinowski made their first contribution in [#7649](#7649) - @chadxz made their first contribution in [#7637](#7637) - @shina1024 made their first contribution in [#7639](#7639) - @jonathanagustin made their first contribution in [#7638](#7638) - @turbocrime made their first contribution in [#7599](#7599) ## 📦 Aqua Registry Updates #### New Packages (3) - [`ampcode/zvelte-check`](https://github.com/ampcode/zvelte-check) - [`nickel-lang/nickel`](https://github.com/nickel-lang/nickel) - [`openshift/rosa`](https://github.com/openshift/rosa)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why?
When running a monorepo task like
mise run //parent/child:task, tools defined in intermediate parent directories (e.g.,parent/mise.toml) were not being inherited by child tasks. Only tools from the monorepo root were inherited.How?
Created a reproduction at chadxz/mise-monorepo-tasks-tool-inheritance demonstrating the bug, then traced through the code to find where config files are loaded for monorepo tasks.
src/toolset/builder.rs: Added
with_config_files()method to ToolsetBuilder, allowing custom config files to be used instead ofconfig.config_files. This enables monorepo tasks to use config files from their directory hierarchy.src/task/task_context_builder.rs:
build_toolset_for_tasknow loads config files from the task's directory usingload_config_hierarchy_from_dir(task_dir)and passes them to ToolsetBuilder viawith_config_files(). This ensures tools are inherited from intermediate parents and ensures MISE_*_VERSION environment variable overrides are applied.src/task/task_tool_installer.rs:
collect_tools_from_config_filenow loads the full config hierarchy so tools from parent directories are installed. Caching behavior is retained using the existingtool_request_set_cacheto avoid re-parsing individual config files when multiple tasks share config files in their hierarchies.src/config/mod.rs: Made
ConfigMaptype crate-public for use by ToolsetBuilder.e2e/tasks/test_task_monorepo_tool_inheritance_intermediate: New test validating intermediate parent tool inheritance.
e2e/tasks/test_task_monorepo_env_version_override: New test validating MISE_*_VERSION env overrides work for monorepo tasks.
Note
Ensures monorepo task execution uses the correct config context and environment overrides.
ToolsetBuilderaddswith_config_files()to accept customconfig_files;load_config_filesuses these when provided.build_toolset_for_taskloads hierarchy viaload_config_hierarchy_from_dir(...), builds withwith_config_files(...), and retains caching.collect_tools_from_config_filetraverses the config hierarchy, de-duplicates tools, and caches per-file tool request sets.ConfigMapcrate-public for reuse by the builder.e2e/tasks/test_task_monorepo_tool_inheritance_intermediateande2e/tasks/test_task_monorepo_env_version_overridevalidating inheritance andMISE_*_VERSIONbehavior.Written by Cursor Bugbot for commit c2f993e. This will update automatically on new commits. Configure here.