Releases: moonrepo/moon
Releases · moonrepo/moon
v1.40.4
v1.40.3
🚀 Updates
- When running a task, we now set
MOON_TASK_RETRY_ATTEMPT
andMOON_TASK_RETRY_TOTAL
environment
variables, which can be accessed in child processes. - Updated VCS hook scripts to set environment variables for each argument passed to the hook, in the
format ofARG<n>
(1-index based).
🐞 Fixes
- Fixed an issue where VCS hooks would not be created if they were removed but the cache still
existed. - Fixed an issue where commands executed by a toolchain would sometimes not inherit the
PATH
correctly.
v1.40.2
🧰 Toolchains
- JavaScript
- Fixed some
pnpm-lock.yaml
parsing issues when usingpnpm
as a package manager.
- Fixed some
⚙️ Internal
- Updated dependencies.
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
PATH
s may not always be injected correctly.
🧰 Toolchains
- JavaScript
- Fixed some
package.json
dependency 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-files
to default to comparing against remote branches when in CI, and
local when not in CI. This aligns with the othermoon query
commands.- This can be overridden with the
--local
and--remote
flags.
- 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_bun
andunstable_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_javascript
plugin. - 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
cache
option, alongside the existing boolean.local
to only use the local cache.remote
to only use the remote cache.
- Added a new
unstable_remote.cache.localReadOnly
setting, 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 task
command to include allPATH
s that are injected when running the task. - Deprecated the
moon run --profile
option.- 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_HASH
environment 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
affectedFiles
andrunFromWorkspaceRoot
generating invalid
paths. - Fixed
moon docker file
generating invalidDockerfile
s after the recent proto install changes. - Fixed an issue where xz/liblzma was dynamically linked, instead of statically.
🧰 Toolchains
- Go
- Fixed an issue with
bins
when installing multiple packages from different modules in parallel.
- Fixed an issue with
- Python
- When running
uv venv
, we now include the--no-managed-python
flag 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-python
flag unless the
python.uv.syncArgs
setting is defined.
- When running
- Rust
- Updated manifest parsing to extract
path
andgit
values from dependencies.
- Updated manifest parsing to extract
- TypeScript
- When
includeSharedTypes
andsyncProjectReferences
are 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_requirements
plugin API for tier 2. - Added
DefineRequirementsInput
andDefineRequirementsOutput
types. - Added
MoonContext.get_project_root
andget_project_root_from_source
methods. - Added
ExtendProjectGraphInput.toolchain_config
field. - Added
ExtendTaskCommandInput.toolchain_config
andproject
fields. - Added
ExtendTaskScriptInput.toolchain_config
andproject
fields. - Added
load_toolchain_config
andload_project_toolchain_config
functions. - Added
load_toolchain_config_by_id
host 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 setup
failing when proto is not available. - Fixed task input inferrence to not include the
$HOME
,$USER
, and$PWD
environment variables. - Fixed some arg/shell quoting issues.
v1.39.3
🐞 Fixes
- Fixed a regression where an unknown/unconfigured
layer
would 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
type
forlayer
, etc).
⚙️ Internal
- Updated dependencies.
v1.39.1
🐞 Fixes
- Fixed a path error for
@moonrepo/cli
package.
v1.39.0
🚀 Updates
- The automatic proto install has moved into a new
SetupProto
action, 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
optional
param, which allows the file to be optional (missing) during hashing.
Defaults to true. - Added a
content
param, which will match against the file's contents to determine affected
state.
- Added a
- Updated task input globs:
- Added a
cache
param, which controls whether the glob results should be cached or not.
- Added a
- Updated the
@moonrepo/cli
npm package to no longer rely on postinstall scripts. - Improved argument quoting for commands and scripts.
- Renamed project
type
tolayer
, as it better reflects what it does, a layer of access within
the projectstack
. For backwards compatibility, thetype
name will still be supported until
v2. The following changes have been made:type
->layer
inmoon.yml
--type
->--layer
inmoon query projects
projectType
->projectLayer
for MQL$projectType
->$projectLayer
for task tokensenforceProjectTypeRelationships
->enforceLayerRelationships
in.moon/workspace.yml
🐞 Fixes
- Fixed
moon query touched-files --defaultBranch
requiring 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.