Releases: moonrepo/moon
Releases Β· moonrepo/moon
v1.40.1
π Fixes
- Fixed an issue where a task would try to execute with proto, but proto hasn't been fully installed
yet. - Fixed an issue where task
PATHs may not always be injected correctly.
π§° Toolchains
- JavaScript
- Fixed some
package.jsondependency version parsing issues.
- Fixed some
βοΈ Internal
- Updated dependencies.
v1.40.0
π₯ Breaking
- The legacy toolchains (bun, node, python, etc) will no longer automatically enable if there's a
version defined in.prototools, as there's no way to differentiate between the legacy and modern
toolchains. - Updated
moon query touched-filesto default to comparing against remote branches when in CI, and
local when not in CI. This aligns with the othermoon querycommands.- This can be overridden with the
--localand--remoteflags.
- This can be overridden with the
π Updates
- Added new JavaScript ecosystem toolchain WASM plugins. This was a large feature that required
extensive work, as the JavaScript ecosystem is quite unique. The following plugins are being
introduced:unstable_javascript- A new JavaScript specific plugin that is a superset of all JavaScript runtimes (Bun & Node,
with Deno coming soon). - Implements tier 1 and 2 features, and is now in charge of defining the package manager,
installing dependencies, extending the project graph (aliases and tasks), parsing
lockfiles/manifests, and much more. - Supports multiple lockfiles for each package manager.
- A new JavaScript specific plugin that is a superset of all JavaScript runtimes (Bun & Node,
unstable_bunandunstable_node- The JavaScript runtimes only implement tier 1 and 3 features, and only exist for installing
the tool into the proto toolchain. Most functionality is now in theunstable_javascript
plugin. - Supports settings for Bun/Node execution.
- The JavaScript runtimes only implement tier 1 and 3 features, and only exist for installing
unstable_npm,unstable_pnpm, andunstable_yarn- The JavaScript package managers only implement tier 1 and 3 features, and only exist for
installing the tool into the proto toolchain. Most functionality is now in the
unstable_javascriptplugin. - Supports settings for package installation.
- npm now supports
npm-shrinkwrap.json. - Is no longer configured within
node, and is now configured at the top-level within
.moon/toolchain.yml.
- The JavaScript package managers only implement tier 1 and 3 features, and only exist for
- Added new values to the task
cacheoption, alongside the existing boolean.localto only use the local cache.remoteto only use the remote cache.
- Added a new
unstable_remote.cache.localReadOnlysetting, which turns local development caching
into a read-only mode (only downloads, doesn't upload). - Updated task commands (child processes) to utilize toolchain executables directly, instead of
relying entirely on proto shims. It achieves this by locating the executables, and prepending
their directory ontoPATH. - Updated
moon taskcommand to include allPATHs that are injected when running the task. - Deprecated the
moon run --profileoption.- This option was only used by Node.js, and is now a configuration setting for the
unstable_node
toolchain.
- This option was only used by Node.js, and is now a configuration setting for the
- When running a task, we now set a
MOON_TASK_HASHenvironment variable for the current hash,
which can be read from child processes. - Published the moon VS Code extension to Open VSX:
https://open-vsx.org/extension/moonrepo/moon-console
π Fixes
- Fixed an issue where proto shim/bin directories were always included in task command
PATH, even
when proto is not required. - Fixed an issue with task options
affectedFilesandrunFromWorkspaceRootgenerating invalid
paths. - Fixed
moon docker filegenerating invalidDockerfiles after the recent proto install changes. - Fixed an issue where xz/liblzma was dynamically linked, instead of statically.
π§° Toolchains
- Go
- Fixed an issue with
binswhen installing multiple packages from different modules in parallel.
- Fixed an issue with
- Python
- When running
uv venv, we now include the--no-managed-pythonflag when thepython.version
setting is defined. This should ensure that moon/proto's Python managed version is used. - When running
uv sync, we now include the--no-managed-pythonflag unless the
python.uv.syncArgssetting is defined.
- When running
- Rust
- Updated manifest parsing to extract
pathandgitvalues from dependencies.
- Updated manifest parsing to extract
- TypeScript
- When
includeSharedTypesandsyncProjectReferencesare both enabled, and the shared types
folder contains atsconfig.json, it will also be synced as a project reference.
- When
π§© Plugins
- WASM API
- Added a new
define_requirementsplugin API for tier 2. - Added
DefineRequirementsInputandDefineRequirementsOutputtypes. - Added
MoonContext.get_project_rootandget_project_root_from_sourcemethods. - Added
ExtendProjectGraphInput.toolchain_configfield. - Added
ExtendTaskCommandInput.toolchain_configandprojectfields. - Added
ExtendTaskScriptInput.toolchain_configandprojectfields. - Added
load_toolchain_configandload_project_toolchain_configfunctions. - Added
load_toolchain_config_by_idhost function.
- Added a new
βοΈ Internal
- Updated proto to v0.52.3 (from 0.51.4).
- Updated Rust to v1.89.0.
v1.39.4
π Fixes
- Fixed an issue with
moon setupfailing when proto is not available. - Fixed task input inferrence to not include the
$HOME,$USER, and$PWDenvironment variables. - Fixed some arg/shell quoting issues.
v1.39.3
π Fixes
- Fixed a regression where an unknown/unconfigured
layerwould trigger a violation error.
v1.39.2
π Fixes
- Fixed a glob input parsing issue when the pattern contained a
?and wasn't in URI format. - Fixed JSON schemas not including property aliases (project
typeforlayer, etc).
βοΈ Internal
- Updated dependencies.
v1.39.1
π Fixes
- Fixed a path error for
@moonrepo/clipackage.
v1.39.0
π Updates
- The automatic proto install has moved into a new
SetupProtoaction, which is now part of the
action graph, and does not run on every command. It's also a bit smarter and will only install
when a toolchain requires it. - Added support for new task input formats based on the RFC: #1985
- Added URI support for files (
file://) and globs (glob://). - Added object support for files and globs.
- Added URI support for files (
- Updated task input files:
- Added a
optionalparam, which allows the file to be optional (missing) during hashing.
Defaults to true. - Added a
contentparam, which will match against the file's contents to determine affected
state.
- Added a
- Updated task input globs:
- Added a
cacheparam, which controls whether the glob results should be cached or not.
- Added a
- Updated the
@moonrepo/clinpm package to no longer rely on postinstall scripts. - Improved argument quoting for commands and scripts.
- Renamed project
typetolayer, as it better reflects what it does, a layer of access within
the projectstack. For backwards compatibility, thetypename will still be supported until
v2. The following changes have been made:type->layerinmoon.yml--type->--layerinmoon query projectsprojectType->projectLayerfor MQL$projectType->$projectLayerfor task tokensenforceProjectTypeRelationships->enforceLayerRelationshipsin.moon/workspace.yml
π Fixes
- Fixed
moon query touched-files --defaultBranchrequiring a "true" or "false" explicit value.
βοΈ Internal
- Added telemetry for toolchain usage.
- Added unstable support for bubbling up logs from WASM plugins.
- Updated Rust to v1.88.0.
- Updated proto to v0.51.4 (from 0.50.1).
- Updated dependencies.
v1.38.6
v1.38.5
π Updates
- Updated project locating to log the glob results for debugging purposes.
π Fixes
- Fixed a
bun.lockparsing error.
v1.38.4
π Updates
- Updated MCP (Model Context Protocol) implementation to use protocol version
2025-06-18from
2025-03-26- in turn, allowing Claude Code to use the MCP.- Updated
sync_projectstool to sync all projects if no IDs provided.
- Updated
π Documentation
- Added Claude Code to MCP documentation.