Changelog
1.41.7
🚀 Updates
- Added
--upstream (dependencies) and --downstream (dependents) options to moon ci to control
the graph depth for affected tracking.
🐞 Fixes
- Fixed an issue where a task
mutex would not be respected, and tasks would still run in parallel.
- Fixed an issue where toolchain dependency install/dedupe would consistently run, because the
underlying lockfile timestamp kept changing.
1.41.6
🐞 Fixes
- Fixed an affected tracking issue where dependencies of already marked projects/tasks were not
being traversed correctly.
- Fixed an issue where unstable toolchains would be installed even when
MOON_TOOLCHAIN_FORCE_GLOBALS has been set.
1.41.5
🚀 Updates
- Added an
optional parameter to task glob outputs.
- WASM API
- Added
ParseManifestInput.root and ParseLockInput.root fields.
🧰 Toolchains
- JavaScript
- Added support for Bun v1.3
package.json catalogs.
- Updated
parse_manifest to resolve versions from applicable catalogs.
🐞 Fixes
- Fixed an issue where interactive tasks would constantly print the "running for" message.
- Fixed an issue where touched files that were not staged would not be included in the
affected/hashing calculation in CI.
1.41.4
🐞 Fixes
- Fixed another issue where deleting a tool from proto's store would not trigger a re-install within
moon.
- Fixed another issue where configuration
extends did not support query strings in URLs.
- Fixed an issue where
project input types were not being included in the task hash, resulting in
re-runs not working.
1.41.3
🐞 Fixes
- Fixed an issue where deleting a tool from proto's store would not trigger a re-install within
moon.
- Fixed an issue where configuration
extends did not support query strings in URLs.
- Fixed an issue where stale VCS hooks would not be removed.
⚙️ Internal
- Updated proto to v0.53.2 (from 0.53.0).
1.41.2
🐞 Fixes
- Fixed a regression that didn't allow identifiers to start with a non-alphanumeric character.
- Fixed a parsing error when loading the
projectsBuildData.json cache state.
🧰 Toolchains
- JavaScript
- Fixed some version parsing issues that contain ".x" and other variants.
1.41.1
🚀 Updates
- Updated remote service to disable itself if it cannot connect to the host, instead of failing the
entire pipeline.
🐞 Fixes
- Fixed an issue where locating projects with
**/moon.yml and a root-level moon.yml existed,
would trigger an invalid identifier error.
1.41.0
💥 Breaking
- WASM API
- Removed
ParseLockOutput.packages field.
🚀 Updates
- Added a new
Deno toolchain implementation,
powered entirely by our new WASM plugin system. It can be enabled with the
unstable_deno
identifier.
- Supports tiers 1, 2, and 3!
- Parses
deno.json and deno.jsonc manifest files.
- Parses
deno.lock lock files.
- Will install dependencies with
deno install.
- Pairs with the
unstable_javascript toolchain.
- And much more!
- Added a new task input type that allows you to depend on changes to a project's files directly,
instead of depending on a project's task.
- Added URI support:
project://<id>
- Added object support:
project: '<id>'
- Can filter with globs or by file group.
- Can reference all project dependencies with
^.
- Added a new task input type for referencing file groups within the owning project.
- Added URI support:
group://<name>
- Added object support:
group: '<name>'
- This is similar to the
@files, @globs, etc, token functions.
- Added URI and object support for task output types, similar to inputs.
file://<path> and file: '<path>'
glob://<pattern> and glob: '<pattern>'
- Added
optional support to file outputs.
- Added new values to the
runInCI task option:
only - Only run the task in CI, and not locally, when affected.
skip - Skip running in CI but run locally and allow task relationships to be valid.
🧰 Toolchains
- JavaScript
- Added Deno support. Can customize
packageManager with deno.
- Added workspace member caching to reduce fs operations.
- Updated
install_dependencies and setup_environment to take project toolchain configuration
into account.
🧩 Plugins
- WASM API
- Added
ManifestDependencyConfig.reference field.
- Added
SyncProjectInput.toolchain_workspace_config field.
⚙️ Internal
- Updated proto to v0.53.0 (from 0.52.3).
- Updated Rust to v1.90.0.
- Updated dependencies.
1.40.5
🧰 Toolchains
- Go
- Fixed
go.mod parsing failures when tool is a list.
- Python
- Potential fix for Windows path escaping issues when running
uv venv.
1.40.4
🐞 Fixes
- Fixed an issue where proto wouldn't be installed for legacy toolchains in certain conditions.
⚙️ Internal
1.40.3
🚀 Updates
- When running a task, we now set
MOON_TASK_RETRY_ATTEMPT and MOON_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 of
ARG<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.
1.40.2
🧰 Toolchains
- JavaScript
- Fixed some
pnpm-lock.yaml parsing issues when using pnpm as a package manager.
⚙️ Internal
1.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.json dependency version parsing issues.
⚙️ Internal
1.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 other moon query commands.
- This can be overridden with the
--local and --remote flags.
🚀 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.
unstable_bun and unstable_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 the
unstable_javascript
plugin.
- Supports settings for Bun/Node execution.
unstable_npm, unstable_pnpm, and unstable_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.
- 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 onto
PATH.
- Updated
moon task command to include all PATHs 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.
- 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 and runFromWorkspaceRoot generating invalid
paths.
- Fixed
moon docker file generating invalid Dockerfiles 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.
- Python
- When running
uv venv, we now include the --no-managed-python flag when the python.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.
- Rust
- Updated manifest parsing to extract
path and git values from dependencies.
- TypeScript
- When
includeSharedTypes and syncProjectReferences are both enabled, and the shared types
folder contains a tsconfig.json, it will also be synced as a project reference.
🧩 Plugins
- WASM API
- Added a new
define_requirements plugin API for tier 2.
- Added
DefineRequirementsInput and DefineRequirementsOutput types.
- Added
MoonContext.get_project_root and get_project_root_from_source methods.
- Added
ExtendProjectGraphInput.toolchain_config field.
- Added
ExtendTaskCommandInput.toolchain_config and project fields.
- Added
ExtendTaskScriptInput.toolchain_config and project fields.
- Added
load_toolchain_config and load_project_toolchain_config functions.
- Added
load_toolchain_config_by_id host function.
⚙️ Internal
- Updated proto to v0.52.2 (from 0.51.4).
- Updated Rust to v1.89.0.
1.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.
1.39.3
🐞 Fixes
- Fixed a regression where an unknown/unconfigured
layer would trigger a violation error.
1.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 for layer, etc).
⚙️ Internal
1.39.1
🐞 Fixes
- Fixed a path error for
@moonrepo/cli package.
1.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:
https://github.com/moonrepo/moon/issues/1985
- Added URI support for files (
file://) and globs (glob://).
- Added object support for files and globs.
- 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.
- Updated task input globs:
- Added a
cache param, which controls whether the glob results should be cached or not.
- Updated the
@moonrepo/cli npm package to no longer rely on postinstall scripts.
- Improved argument quoting for commands and scripts.
- Renamed project
type to layer, as it better reflects what it does, a layer of access within
the project stack. For backwards compatibility, the type name will still be supported until
v2. The following changes have been made:
type -> layer in moon.yml
--type -> --layer in moon query projects
projectType -> projectLayer for MQL
$projectType -> $projectLayer for task tokens
enforceProjectTypeRelationships -> 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.
1.38.6
🧰 Toolchains
- Go
- Fixed
go.* parsing failures when there was no trailing newline.
⚙️ Internal
- Updated proto to v0.50.5 (from 0.50.1)
to resolve an "unknown field
spec" error. This is triggered when the global proto binary is
using v0.51, and moon is using proto < v0.50.5.
1.38.5
🚀 Updates
- Updated project locating to log the glob results for debugging purposes.
🐞 Fixes
- Fixed a
bun.lock parsing error.
1.38.4
🚀 Updates
- Updated MCP (Model Context Protocol) implementation to use protocol version
2025-06-18 from
2025-03-26 - in turn, allowing Claude Code to use the MCP.
- Updated
sync_projects tool to sync all projects if no IDs provided.
📚 Documentation
- Added Claude Code to MCP documentation.
1.38.3
🐞 Fixes
- Fixed the duplicate nodes in the action graph.
1.38.2
🚀 Updates
- More plugin pre-loading improvements.
🐞 Fixes
- Potential fix for duplicate nodes in the action graph.
- Potential fix for the node platform panicing for a missing package manager.
- Potential fix for a fs rename error when installing proto.
- Fixed a panic that would occur during
moon ci job calculation.
1.38.1
🚀 Updates
- Added a new setting for toolchain plugins,
versionFromPrototools, which controls how we inherit
a version from the root .prototools file. By default this is enabled, but can be configured with
a string if the IDs don't match.
- Added support for toolchain plugins to replace/wrap a task script in the
extend_task_script WASM
API.
- Updated toolchain setup to preload the proto WASM plugin. This should help to alleviate network
race conditions.
- Updated
moon setup to also install toolchain plugins.
🐞 Fixes
- Fixed an issue where toolchain plugins do not inherit versions from
.prototools.
- Fixed an issue where a file lock would be created for proto installation, even when it didn't need
to be installed.
- Fixed an issue where
moon docker prune would force install all toolchains. If you were relying
on this functionality, run moon docker setup instead.
🧩 Plugins
- WASM API
- Added
ExtendTaskScriptOutput.script field.
1.38.0
💥 Breaking
- WASM API
- Renamed
RegisterToolchainOutput.lock_file_name to RegisterToolchainOutput.lock_file_names
and its type to Vec<String>.
- Renamed
RegisterToolchainOutput.manifest_file_name to
RegisterToolchainOutput.manifest_file_names and its type to Vec<String>.
🚀 Updates
- Added a new
Go toolchain implementation,
powered entirely by our new WASM plugin system. It can be enabled with the
unstable_go
identifier.
- Supports tiers 1, 2, and 3!
- Supports Go workspaces via
go.work files.
- Extracts project dependencies and relationships from
go.mod files.
- Extracts version and lockfile information from
go.sum and go.work.sum files.
- Basic vendor support (
go mod vendor) during Docker prune.
- Added new tools for
moon mcp.
get_touched_files - Gets touched files between base and head.
sync_projects - Runs the SyncProject action for one or many projects.
sync_workspace - Runs the SyncWorkspace action.
- Added new
moon toolchain command and sub-commands.
- Add a toolchain to
.moon/toolchain.yml with moon toolchain add.
- View information about a toolchain plugin with
moon toolchain info.
- Added support for terminal desktop notifications. Can be enabled with the new
notifier.terminalNotifications setting in .moon/workspace.yml.
- Added a
notifier.webhookAcknowledge setting, that ensures webhooks resolve with a 2xx status
code.
- Updated project graph invalidation to take manifests from toolchain plugins into account.
🐞 Fixes
- Fixed an issue with task output hydration that would sometimes fail with a permission denied error
when cleaning stale files.
🧩 Plugins
- Updated
rust_toolchain to v0.2.0.
- Cached the globals bin directory when extending task commands/scripts.
- Task hashing now includes the host OS, arch, and libc.
- WASM API
- Added
LocateDependenciesRootInput.toolchain_config field.
- Added
PruneDockerInput.toolchain_config field.
- Added
ScaffoldDockerInput.toolchain_config field.
⚙️ Internal
- Updated proto to v0.50.1 (from 0.49.4).
1.37.3
🐞 Fixes
- Fixed an issue where
git:// based code generation couldn't checkout a specific commit.
- Fixed incorrect casing for the
moon migrate --skipTouchedFilesCheck option.
1.37.2
🚀 Updates
- Updated
moon ci to always run the sync workspace action, even when no tasks are affected.
🐞 Fixes
- Fixed an issue where
git commands would attempt to execute, even when no git binary was found.
- Fixed an issue where
moon docker scaffold would over scaffold the same project multiple times.
- Fixed an issue where proto would be installed when
MOON_TOOLCHAIN_FORCE_GLOBALS is set.
- Reworked the
git commands that are executed for git:// based code generation.
⚙️ Internal
1.37.1
📚 Documentation
- Updated the MCP documentation.
- Added Zed support.
- Added an
llms.txt file to our website.
- Updated code examples to include the
MOON_WORKSPACE_ROOT environment variable.
🐞 Fixes
- Fixed environment variable inheritance for config settings not always working correctly.
🧩 Plugins
- Updated
rust_toolchain to v0.1.2.
- Fixed
cargo-binstall failing in CI when the binary already exists.
- WASM API
- Added
SetupEnvironmentInput.globals_dir field.
⚙️ Internal
1.37.0
🔖 RFCs
🚀 Updates
- Added a new
Rust toolchain implementation,
powered entirely by our new WASM plugin system. Since toolchain plugins are new and unstable, this
Rust toolchain can be enabled with the
unstable_rust identifier (instead of rust).
- Supports multiple Cargo workspaces, and workspaces can exist at any depth.
- More accurate project relationship detection.
- New
addMsrvConstraint setting.
- Better Docker prune implementation.
- Improved manifest/lockfile parsing.
- Cargo/rustup commands are now hashed and cached.
- Added an unstable
moon mcp command, which starts an MCP (model context protocol) stdio server
that responds to AI agent requests.
- Supports the following tools:
get_project, get_projects, get_task, get_tasks.
- We will be expanding this with more functionality over time, like
run_task, etc.
- Updated webhook events.
- Added
environment.initializing and environment.initialized events.
- Added
root and toolchain fields to dependencies.installing and dependencies.installed
events.
- Deprecated the
runtime field in all events. Will be removed once toolchain plugins are
complete.
🧩 Plugins
- Added test utilities for testing toolchain plugin functions.
- Improved cache handling and invalidation for
SetupEnvironment and InstallDependencies actions.
- WASM
- Reworked all virtual path fields in "output" structs to greatly reduce the JSON payload.
- Reworked the
ManifestDependency type to be an enum instead of a struct.
- Added
ProjectDependency.via field.
⚙️ Internal
- Updated proto to v0.49.4 (from 0.49.1).
- Updated dependencies.
1.36.3
🐞 Fixes
- Fixed an issue where environment variables with default/fallback values (
${VAR:+default}) were
not parsed correctly.
⚙️ Internal
1.36.2
🚀 Updates
- Added support for shell-specific environment variable namespaces when scanning and substituting
values. Supports the following:
$E: - Elvish
$env:: - Ion
$ENV. - Murex
$env. - Nu
$env: - PowerShell
- Updated all identifiers to support unicode alpha-numeric characters instead of just ASCII.
🐞 Fixes
- Fixed some issues where
MOON_TOOLCHAIN_FORCE_GLOBALS wasn't respected for Python and Rust
toolchains.
1.36.1
🐞 Fixes
- Fixed an issue where tasks would not substitute environment variables when executing, because it
did not run in a shell.
⚙️ Internal
1.36.0
🚀 Updates
- Added more unstable support for toolchain plugins.
- In the project graph:
- Extend projects with dependencies, tasks, and an alias.
- In the action pipeline:
- Added
SetupEnvironment action that executes the setup_environment WASM API.
- Added
InstallDependencies action that executes the install_dependencies WASM API.
- When running tasks:
- Extend the command/script with additional parameters before executing.
- Inject dependency and lock information into the hash.
- With Docker:
- Updated
docker prune to utilize the new WASM APIs for toolchain plugins.
- Added
--host and --port options to moon action-graph, moon task-graph, and
moon project-graph.
- Added
--stdin option to moon ci and moon run, which will allow touched files to be passed
via stdin, instead of running VCS commands to determine them.
- This is a follow-up fix to the revert in a previous version. This functionality is now opt-in
instead of the default, to avoid problematic edge cases.
- Updated and improved remote caching:
- Added an
unstable_remote.cache.verifyIntegrity setting, that will verify the digest of
downloaded blobs to ensure they aren't corrupted or incomplete. Will degrade performance but
ensure reliability.
- Added a file rollback mechanic to that will be triggered when hydration fails part way and
written files need to be removed.
- Updated blob existence checks to be batched and parallelized.
- Can now be enabled entirely through environment variables.
- Updated and improved code generation:
- Added support for
array and object variable types in template.yml. The values must be JSON
compatible.
- Updated
generator.templates to support https:// URLs that point to an archive that can be
unpacked.
- Removed the restriction around
moon.{yml,pkl} not being allowed as a task input. However, will
not be included when using **/*.
🐞 Fixes
- Fixed an issue where terminal prompt validation would not trigger.
- Fixed an issue with remote cache hydration where multiple files with the same blob hash would fail
to write them all.
- Fixed an issue where changing
args or env of a task dependency would not invalidate its cache.
- Fixed an issue where environment variables passed on the command line would not overwrite task
env.
- Fixed tag-based task dependencies not creating implicit project dependencies.
- Fixed some task/command argument quoting issues.
🧩 Plugins
- Added new toolchain WASM APIs.
extend_project_graph - Extend projects with toolchain specific info.
extend_task_command - Extend the command child process with parameters.
extend_task_script - Extend the script child process with parameters.
locate_dependencies_root - Locate the package dependencies workspace root.
parse_manifest - Parse a manifest file to extract dependencies.
parse_lock - Parse a lock file to extract resolved dependencies.
- WASM
- Added
InstallDependenciesInput.packages and production fields.
- Added
InstallDependenciesOutput.operations field.
- Added
PruneDockerInput.projects and root fields.
- Added
PruneDockerOutput.
- Added
SetupEnvironmentOutput.operations field.
- Added
SetupToolchainOutput.operations field.
- Added
SyncWorkspaceInput.toolchain_config field.
- Added
TeardownToolchainInput.version field.
⚙️ Internal
- Updated Rust to v1.87.0.
- Updated proto to v0.49.1 (from 0.47.11).
- Updated dependencies.
1.35.7
🐞 Fixes
- Reverted
moon ci and moon run accepting touched files via stdin, as it's causing issues in CI
environments. Will revisit for the next release.
1.35.6
🚀 Updates
- Updated
moon run to support passing touched files via stdin.
- Updated commands that wait for stdin to continue after 10 seconds if nothing was received.
🐞 Fixes
- Fixed an issue where Git v2 would error loading submodules that haven't been checked out yet.
- Fixed an issue with remote cache hydration that would leave around stale artifacts.
- Fixed an issue where parallel persistent tasks wouldn't prefix output.
1.35.5
🐞 Fixes
- Potential fix for affected dependencies in the action pipeline not running and failing with a
"missing hash" error.
- Potential fix for "Bun" and "Node with Bun as a package manager" both installing dependencies in
parallel and colliding.
- Fixed an issue where downloading an invalid remote cache would not abort the hydrate process.
1.35.4
🚀 Updates
- Updated remote caching to error if an output file is a symlink to a file outside of the workspace.
🐞 Fixes
- Fixed an issue with priority tasks where dependencies of the task may sometimes not run in the
correct order in the pipeline.
- Fixed an issue where task
affectedFiles and runFromWorkspaceRoot would pass invalid relative
file paths.
- Fixed an issue where running tasks for custom plugins would trigger a panic.
1.35.3
🚀 Updates
- Updated remote uploads/downloads to abort when receiving a ctrl+c.
🐞 Fixes
- Fixed an issue where interrupting (ctrl+c) a task that exits with a 0 code would treat is as
succesful, resulting in an invalid cache.
1.35.2
🚀 Updates
- Improved bare repository support for Git v2.
- Updated
moon ci to support passing touched files via stdin.
🐞 Fixes
- Fixed the faster/new glob implementation not filtering out hidden directories. This should now
work like the old implementation.
- Fixed the new Git v2 not working correctly for synced hooks and worktrees.
1.35.1
🚀 Updates
- Added locks to workspace graph building to avoid duplicate graphs.
- Enabled TCP keep alive for remote service connections.
- Tweaked the remote cache file size threshold.
🐞 Fixes
- Fixed a scenario where task outputs would be partially hydrated from remote cache.
1.35.0
🚀 Updates
- Rewrote the action graph to support plugins. The following changes have been made.
- Is now async compatible. In the future, we'll update it to also support concurrency, so that the
graph can be built in parallel across threads.
- Reduced the amount of edges (relationships) being created between nodes (actions).
- Added a new
InstallDependencies action for WASM plugins.
- The dependencies root is now dynamically located by traversing the file system, unlike the
previous implementation that assumed everything was in the workspace root.
- Added a new
SetupEnvironment action for WASM plugins.
- This runs after
SetupToolchain but before InstallDependencies.
- Can be used to setup the workspace or project environment. For example, initializing Python
venv, or making manifest/lockfile changes.
- Updated
RunTask to setup toolchains and install dependencies for each toolchain that has
been configured, instead of just the 1st one (work in progress).
- Updated
SyncProject to no longer depend on SetupToolchain, and not be grouped by
language/toolchain, and instead encompass all of them applicable to the project.
- Added a new task option,
cacheKey, which can be used to seed the hash, and invalidate local and
remote caches.
- Added a new task option,
priority, that controls the position in the pipeline queue.
- Supports
critical, high, normal (default), or low.
- Added a
--log=verbose level, which includes span information on top of the trace level.
- Added a light terminal theme. Can be enabled with
--theme=light or MOON_THEME=light.
- This is still a work in progress. Open to feedback on color/contrast choices.
- Added 2 new webhooks,
toolchain.installing and toolchain.installed, which emit when a
toolchain WASM plugin is installing a tool (via proto).
- Enabled the
experiments.fasterGlobWalk and experiments.gitV2 experiments.
🧩 Plugins
- Added tier 3 support (tier 2 still a work in progress).
- Added new toolchain WASM APIs.
locate_dependencies_root - Locates the dependencies root (workspace).
setup_environment - Runs operations to setup an environment for a project/workspace before
installing dependencies and running tasks.
install_dependencies - Defines commands to install/dedupe dependencies.
setup_toolchain - Runs operations after the tool has been installed.
teardown_toolchain - Runs operations before the tool will be uninstalled.
🐞 Fixes
- Fixed the error handling of remote service uploads and downloads.
- Fixed a timed out task displaying a generic and unhelpful error message.
⚙️ Internal
- Linux binaries are now built on Ubuntu v22 instead of v20.
- Rewrote our testing utilities and updated all tests.
- Updated proto to v0.47.11 (from
0.47.7).
- Updated Rust to v1.86.0.
1.34.3
🐞 Fixes
- Attempted fix for the "plugin typescript already exists" error.
- Fixed an issue where negated glob task
inputs wouldn't filter the file list when hashing.
⚙️ Internal
1.34.2
🚀 Updates
- Minor change to remote caching up/download batching to increase performance.
- Reworked remote caching error handling.
🐞 Fixes
- Fixed an issue where remote caching would fail to upload multiple blobs if the sum of their sizes
exceed the max upload size.
- Fixed an issue where the same plugin could be loaded multiple times.
- Fixed an issue when parsing config/template files that contain a byte-order mark (BOM).
⚙️ Internal
1.34.1
🐞 Fixes
- Fixed a compilation error when moon is installed through Cargo.
- Fixed the version missing in
--version and --help.
- Fixed text wrapping issues when rendering tables in the terminal.
1.34.0
💥 Breaking
- We have sunset our moonbase service and removed its integration from
moon. If you were using moonbase's remote caching, we suggest using
Depot or self-hosting instead.
🚀 Updates
- Integrated a new console rendering system with new terminal styles, prompts, and output.
- Updated all applicable commands.
- Updated
moon templates to render a list of data.
- Updated
moon query projects and moon query tasks to render a table of data.
- Added new settings to
pipeline (formerly runner) in .moon/workspace.yml to control which
kinds of action nodes exist in the action graph when running tasks.
syncWorkspace setting toggles the root SyncWorkspace action.
syncProjects setting toggles the SyncProject actions, and can be scoped to project IDs.
syncProjectDependencies setting toggles whether to recursively link SyncProject actions
based on project dependencies.
installDependencies setting toggles the InstallWorkspaceDeps and InstallProjectDeps
actions, and can be scoped to toolchain IDs.
- Added an
experiments.fasterGlobWalk setting to .moon/workspace.yml, that will use a better
glob walker implementation. Do note that this is experimental and may be buggy!
- In our benchmarks, it's on average 1.5-2x faster.
- We also attempt to cache the results, which occurs quite often when running tasks.
- Globs are now logged to better debug performance issues.
- Added an
experiments.gitV2 setting to .moon/workspace.yml, that uses a new Git implementation.
- Has better support for submodules, subtrees, and worktrees.
- Parallelizes processes when applicable.
- Covers edge cases the v1 implementation did not support.
- Added a
--no-actions flag to moon run, that will run the task without including the other
actions, like SyncProject, SetupToolchain, etc.
- Added a
--json flag to moon templates.
- Deprecated the
pipeline.archivableTargets setting. All tasks are now automatically cached if
using Bazel Remote Caching.
- Improved the performance of environment variable substitution.
- Improved toolchain plugin loading to be on-demand.
- Improved sync cache invalidation for codeowners, config schemas, and VCS hooks.
- Updated
moon docker file to inherit the default Docker image from any applicable toolchain
plugins.
- Updated
moon sync to no longer be deprecated, and instead sync the workspace and all projects.
- WASM API
- Added
DefineDockerMetadataOutput.default_image field.
- Added
SettingPrompt.description field.
⚙️ Internal
- Updated Rust to v1.85.1.
- Updated dependencies.
1.33.3
🐞 Fixes
- Fixed an issue where
npx @moonrepo/cli would no longer work.
- Fixed an issue where
toolchain.typescript = true in moon.yml would not inherit it as a
toolchain.
⚙️ Internal
- Updated proto to v0.47.7 (from 0.47.4).
- Updated dependencies.
1.33.2
🚀 Updates
- Added
MOON_REMOTE_* environment variables for many unstable_remote settings.
🐞 Fixes
- Fixed an issue where project toolchain detection would not take the
toolchain disabled state in
moon.yml into account.
⚙️ Internal
1.33.1
🐞 Fixes
- Fixed an issue where internal tasks could be ran when using the "run in closest project"
shorthand.
- Fixed an issue where the task
preset would sometimes not be inherited when using extends.
🧩 Plugins
- Updated
typescript_toolchain to v0.1.3.
- Will no longer error if a file in
extends is missing during task hashing.
1.33.0
💥 Breaking
🚀 Updates
- The TypeScript toolchain is now powered by a
WASM plugin. This is our
first step in supporting plugins in core. We chose TypeScript as our 1st plugin because it was the
simplest of all the toolchains, and primarily was used for project syncing.
- Plugins must be downloaded from the internet, so a connection is required on the first run. The
plugin is then cached locally.
- Most of the code had to be rewritten but we tried to keep as much parity as possible. Please
report an issues or differences you encounter.
- Because TypeScript is now a "true" toolchain, it will appear in the toolchains list for projects
and tasks. This is required since it runs operations in the context of the plugin.
- All
typescript settings in .moon/toolchain.yml can now be defined as overrides in
moon.yml.
- Added new toolchain plugin integrations for specific features.
- Integrated into the
SyncWorkspace and SyncProject actions.
- Integrated into all
moon docker commands.
- Integrated into the task hashing process.
- Added a new
moonx executable, which is a shorthand for moon run.
- Right now the implementation uses Bash/PowerShell shims, but will be migrated to a true binary
executable once we rework our release process.
- The shims are dynamically created the first time moon runs, relative to the executed
moon
binary.
- Added support for
moon run ~:build, which will run the build task in the closest project
(traversing upwards).
- Added
$XDG_DATA_HOME support when detecting the moon store. Will be used if $MOON_HOME is not
set, and will fallback to $HOME/.moon.
- Added elapsed/timing information to child processes and WASM calls within logs.
- Improved the handling of CTRL-C, CTRL-BREAK, and other signals on Windows.
- Updated
moon init with toolchain plugin support.
- Updated
toolchain.default in moon.yml to support a list of IDs.
- Updated
unstable_remote.auth.headers to support environment variable interpolation.
- Updated generated JSON schemas at
.moon/cache/schemas to dynamically include toolchain plugin
configuration.
- Updated file hashing (via
git hash-object) to continously pipe stdin to avoid hanging processes.
- Deprecated
hasher.batchSize in .moon/workspace.yml.
🧩 Plugins
- Added new toolchain WASM APIs.
register_toolchain - Registers the toolchain and provide metadata for detection and other
purposes.
initialize_toolchain - Provides prompts to use during moon init to gather settings values.
define_toolchain_config - Defines a configuration schema for use within JSON schemas.
define_docker_metadata - Defines metadata related to docker commands.
hash_task_contents - Injects content into the task hashing process.
prune_docker - Custom operations to run during docker prune.
scaffold_docker - Custom operations to run during docker scaffold.
sync_project - Runs syncing operations per project (during the SyncProject action).
sync_workspace - Runs syncing operations at the workspace root (during the SyncWorkspace
action).
- Updated
download_extension to v0.0.9.
- Updated
migrate_nx_extension to v0.0.9.
- Will no longer remove Nx configs. Pass
--cleanup to remove them.
- Updated
migrate_turborepo_extension to v0.1.6.
- Will no longer remove Turborepo configs. Pass
--cleanup to remove them.
🐞 Fixes
- Fixed an issue where file hashing (
git hash-object) would hang when there are too many files
being hashed.
⚙️ Internal
- Updated proto to v0.47.4 (from 0.45.2).
- Updated Rust to v1.85.
- Updated dependencies.
- Removed JSON schemas from the GitHub release.
1.32.9
🐞 Fixes
- Reverted "Fixed an issue where task output wasn't captured for the "review" section in a run
summary." as it caused a regression.
1.32.8
🐞 Fixes
- Fixed an issue where task output wasn't captured for the "review" section in a run summary.
- Fixed an issue where a task with a
script would always be forced to the "system" toolchain.
1.32.7
🚀 Updates
- Updated
moon task-graph, moon-project-graph, and moon action-graph to request a port
dynamically, instead of defaulting to 8000.
🐞 Fixes
- Fixed an issue where
moon *-graph commands could not be CTRL+C'd.
- Fixed an issue where Git based template locations would fail if the initial
git clone failed.
1.32.6
🐞 Fixes
- Fixed an issue where aliases would not be inherited for some toolchains.
- Fixed some token variable interpolation for paths on Windows.
1.32.5
🚀 Updates
- Updated Python uv with new features:
- Project aliases are inferred from
project.name in pyproject.toml.
- Implicit project dependencies are inferred from
project.dependencies in pyproject.toml.
- Requires a bare identifier with no version/url/origin markers.
- Currently does not support
tool.uv or workspaces.
🐞 Fixes
- Fixed an issue where no touched files would be found when pushing commits on the default branch.
- Fixed an issue where
pyproject.toml or uv.lock would sometimes not be parsed.
1.32.4
🐞 Fixes
- Fixed an issue where a project could be inserted into the project graph multiple times.
- Fixed an issue where touched files would sometimes not be available outside of affected scopes.
1.32.3
🐞 Fixes
- Fixed an issue where
moon setup wouldn't load configuration.
- Fixed an issue where
moon docker scaffold would unexpectedly install the toolchain languages.
- Fixed an issue where
moon docker scaffold would not copy uv.toml and uv.lock files.
- Fixed an issue where changing
python.version wouldn't regenerate the Python virtual environment.
1.32.2
🐞 Fixes
- Fixed an issue where
NO_COLOR or FORCE_COLOR would be overwritten for task child processes.
⚙️ Internal
- Updated proto to v0.45.2 (from 0.45.1).
- Updated dependencies.
1.32.1
🚀 Updates
- Added a
runner.killProcessThreshold setting to control the threshold in which to force kill
child processes when a signal is received. Defaults to 2 seconds.
🐞 Fixes
- Fixed an issue where
bash and batch project language's would not inherit tasks.
- Fixed some
bun.lock parsing issues.
1.32.0
🚀 Updates
- Added unstable support for multiple package workspaces when installing dependencies and resolving
lockfiles.
- For example, you can now have multiple
yarn.lock files throughout the repository, allowing for
multiple Yarn/Node workspaces.
- Updated Pkl (
.pkl) based configuration to always be enabled, and is no longer hidden behind an
experimental flag.
- Updated our unstable remote service (Bazel RE API) with new functionality:
- You can now use
http(s) protocols for gRPC servers, instead of just grpc(s).
- Added an
unstable_remote.api setting, which can be used to inform the server's API format.
Defaults to grpc.
- Added an
unstable_remote.auth setting, which can be used for HTTP Bearer/token Authorization
based endpoints. Can also be used to set headers for all requests.
- Added support for Depot cloud-based caching: https://depot.dev/docs/cache/overview
- Added support for the HTTP protocol: https://bazel.build/remote/caching#http-caching
- Added support for the ByteStream API.
- Added timeout and concurrency limit to clients.
- Added a
MOON_DEBUG_REMOTE environment variable, which can be used to debug internal errors for
diagnosing connection/integration issues.
- Improved handling of TLS/mTLS connections.
- Improved the Bun toolchain.
- Added support for the new v1.2
bun.lock file. We do our best to detect this, but we suggest
configuring --save-text-lockfile.
- Improved the Deno toolchain.
- Added support for Deno v2 and
deno install. Will now run this command instead of deno cache.
- Added support for v3 and v4 lockfiles (we now use the
deno_lockfile crate).
- Added basic support for workspaces.
- Added
deno.installArgs setting.
- Improved the Python toolchain.
- Added unstable uv support. Can be enabled with the new
python.packageManager and python.uv
settings.
- Right now, has basic toolchain support, including dependency installs and virtual
environments.
- Renamed
python.rootRequirementsOnly to python.rootVenvOnly (old name still works).
- Will now inherit versions from the root
.prototools.
- Improved the Rust toolchain.
- The root-level project is now properly taken into account when detecting if a project is within
the Cargo workspace.
- Project dependencies (
dependsOn) are now automatically inferred from Cargo.toml
dependencies.
- Reworked child process handling to better handle signals and shutdown accordingly. Additionally,
when the pipeline receives a signal, we now display the status that shutdown the pipeline in the
summary.
- Reworked the new task
inferInputs option to not infer environment variables from popular CI/CD
providers, as those values constantly change, causing tasks to always be affected. If you would
like to reference these values, add them as an explicit inputs.
🐞 Fixes
- Fixed lots of issues around remote caching. Should be "stable" now.
⚙️ Internal
1.31.3
🐞 Fixes
- This patch upgrades proto to the latest version to fix some bin locating issues that you may have
encountered if you have proto v0.45 installed on your system, which conflicts with the proto v0.44
that moon installs.
⚙️ Internal
- Updated proto to v0.45.1 (from 0.44.4).
1.31.2
🚀 Updates
- Added file locks for certain operations to avoid race collisions when multiple
moon commands are
ran in parallel.
🐞 Fixes
- Fixed an issue where inferred inputs would include directories that would log a warning and fail
to be hashed.
⚙️ Internal
1.31.1
🐞 Fixes
- Fixed
NO_COLOR and FORCE_COLOR being unexpectedly set in some situations.
- Fixed an issue where a custom project
language would no longer inherit global tasks of the same
name.
⚙️ Internal
- Updated proto to v0.44.4 (from 0.44.2).
1.31.0
💥 Breaking
- We've updated the task inheritance order to better reflect specificity. The biggest changes are
that deno/node/bun are now a higher priority than javascript/typescript, and stack is the lowest
priority. This should only affect users with very complex inheritance chains.
🚀 Updates
- We are deprecating the concept of the "platform", as this is required for the next step in
supporting WASM based toolchain plugins. Going forward, any reference to platform is now a
toolchain. The following changes have been made:
- Deprecated the top-level
platform setting in moon.yml, use toolchain.default instead.
- Additionally, the toolchain can now be inferred from the top-level
language setting and any
config files in the project/workspace root. This pattern is preferred when possible.
- Deprecated the
platform task setting, use toolchain instead.
- Deprecated the
taskPlatform query field, use taskToolchain instead.
- Deprecated the
--platform option for moon query tasks, use --toolchain instead.
- Deprecated the
$taskPlatform token, use $taskToolchain instead.
- Added the ability to run targets in
moon run and moon ci using a glob-like syntax.
- For example:
:build-*, app-*:build, #tag-{foo,bar}:build, etc.
- Added a
--no-bail flag to moon run, that will continue running tasks even when a task fails.
- Added glob support (and
glob://) to generator.templates in .moon/workspace.yml, allowing you
to glob for your codegen template locations.
- Added a task option
inferInputs, that will automatically infer inputs based on file groups and
substituted environment variables used within the task.
- Updated task option
runInCI to support the values "always" (always run) and "affected" (only run
if affected, same as true).
- Updated task inputs to automatically be inherited from file group token functions used within the
task's
script, command, args, or env.
- Updated the
extends setting in .moon/workspace.yml, toolchain.yml, and tasks.yml, to
support a list of files/URLs to extend.
- Updated our unstable remote service (Bazel RE API) with new functionality:
- Added an
unstable_remote.cache.compression setting, which can be set to zstd to enable
zstandard compression on output blobs.
- Symlink based outputs will now be created as symlinks on Windows, where previously they were
copies. Do note that symlinks require
privileged access on Windows
to function correctly.
- Updated the
moon templates command:
- Templates are now sorted by identifier.
- Added a
--filter option to filter the templates list by ID.
- Updated toolchain dependency installs to retry up to 3 attempts if the install command fails.
- Improved the task output prefixing logic.
🐞 Fixes
- Fixed a panic that could occur during command argument parsing.
- Fixed an issue where remote cached blobs would sometimes fail to be created locally.
- Fixed an issue when
ctrl+cing multiple persistent tasks would sometimes leave them running in
the background.
⚙️ Internal
- Updated proto to v0.44.2 (from 0.44.1).
- Updated dependencies.
1.30.6
🐞 Fixes
- Fixed an issue where
python venv would fail to find an applicable Python version.
- Fixed an issue with PowerShell Git hooks not bubbling up exit codes of failed commands.
- Fixed an issue where Git submodules/worktrees would point to the wrong hooks folder.
⚙️ Internal
- Updated proto to v0.44.1 (from 0.43.1).
1.30.5
🐞 Fixes
- Fixed Python virtual env bin path not being available for tasks when
python.version is not
defined.
⚙️ Internal
- Updated proto to v0.43.1 (from 0.43.0).
- Updated dependencies.
1.30.4
🐞 Fixes
- Fixed
moon ci showing incorrect job related logs.
- Fixed some issues with the Python toolchain:
- pip is no longer required to be enabled to activate a virtual environment.
- Changed
python.rootRequirementsOnly to false by default.
- The venv root is now the location of a found
requirements.txt, otherwise the package root, or
workspace root if python.rootRequirementsOnly is enabled.
- Tasks will now inherit the correct venv paths in
PATH.
1.30.3
🐞 Fixes
- Fixed an issue where a task with explicit no inputs (
inputs: []) would always be marked as
affected.
⚙️ Internal
- Updated proto to v0.43.0 (from 0.42.2).
- Updated wasmtime to v26 (from v23).
- Updated Rust to v1.83.
1.30.2
🐞 Fixes
- Fixed an issue where dependencies/dependents of an affected task would be skipped in the action
graph if they were also not affected.
- Fixed a potential cycle (stack overflow) that may occur in the affected tracker.
⚙️ Internal
- Improved task dependent resolution in the action graph.
1.30.1
🐞 Fixes
- Fixed a Git "fatal: bad object" error when submodules are in being used.
- Fixed an issue where
moon ci would trigger a shallow checkout error, even when a base revision
is provided.
- Fixed an issue were changes in a non-direct dependency would not mark a deep dependent as
affected.
1.30.0
💥 Breaking
- If you renamed a project using the
id setting in moon.yml, you can no longer reference that
project in dependencies and targets using its original ID.
- Refactored the
moon query tasks command.
- CLI options have been replaced with new task based options, instead of being project based.
- Now utilizes the new task graph and affected tracker.
- The
moon project-graph --json output no longer includes task data (the tasks field is an empty
map).
- Use
moon task-graph to access this data, and piece things together using the project
taskTargets field.
- The
moon project --json output pieces everything together automatically.
🚀 Updates
- Added unstable support for self-hosted remote caches, powered by the
Bazel Remote Execution API.
- Allows for 3rd-party implementations like
bazel-remote to be used.
- Currently supports the gRPC protocol, and will support HTTP in a later release.
- Our moonbase product will be sunset in the future.
- Added Python tier 2 and 3 support.
- Will download and install Python into the toolchain when a
version is configured.
- Will parse the
requirements.txt to resolve and install dependencies.
- Added a
python setting to .moon/toolchain.yml.
- Added a
toolchain.python setting to moon.yml.
- Updated
moon bin commands to support Python.
- Added a new task graph, that enables new granular based functionality for task related features.
- Added a new
moon task-graph command.
- Can now control the depth of upstream (dependencies) and downstream (dependents).
- Affected information now tracks based on dependent graph connections.
- Added
--upstream and --downstream options to moon query tasks.
- Added basic support for Git submodules, and will now extract touched files from all submodules.
- Added 7 new token variables:
$arch, $os, $osFamily, $vcsBranch, $vcsRepository,
$vcsRevision, $workingDir
- Added a
rust.binstallVersion setting to .moon/toolchain.yml.
- Updated Pkl configurations to support
read() for environment variables.
- Resolved the
strictProjectIds experiment and you can no longer reference the original ID.
- Resolved the
disallowRunInCiMismatch experiment and you can no longer have a CI based task
depend on a non-CI based task.
🐞 Fixes
- Fixed
moon project-graph <id> not including all dependencies/dependents. It was only showing
direct relationships.
- Fixed an issue where touched file paths would include Git submodule directories and trigger hasher
warnings.
⚙️ Internal
- Updated dependencies.
- Updated proto to v0.42.2 (from 0.42.0).
1.29.4
🚀 Updates
- Added an
experiments.strictProjectIds setting to .moon/workspace.yml. When enabled, will
disallow using original IDs for renamed projects (via the id setting) when building the project
graph.
- Updated codegen/template
destination to be relative from the workspace root if prefixed with
/, otherwise the current working directory.
🐞 Fixes
- Fixed an issue where moon would attempt to execute a folder if it has the same name as the current
shell.
- Fixed an issue where
[working_dir] and [workspace_root] variables were not working in the
template.yml destination setting.
⚙️ Internal
- Updated dependencies.
- Updated proto to v0.42.0 (from 0.41.3).
1.29.3
🐞 Fixes
- Fixed an issue running
npx commands (primarily through lockfile deduping).
1.29.2
🚀 Updates
- Removed the warning around
.env files not existing in certain environments.
🐞 Fixes
- Fixed an issue where the task option
timeout would apply to the overall run, and not for each
attempt when using the retryCount option.
⚙️ Internal
1.29.1
🚀 Updates
- Added a new task option
merge, that defines the same strategy for all applicable fields. Can be
overridden with mergeX task options.
- Added a
moon setting to .moon/toolchain.yml, which can be used to customize the update check
process.
🐞 Fixes
- Fixed
moon query projects including dependency projects by default. Can be controlled with
--upstream.
- Fixed
moon query projects regex patterns not working when used in conjunction with affected.
- Fixed Bash-based hooks being generated with the wrong path separators on Windows.
- Fixed an issue where an inherited task with merge strategy "replace" will accidentally remove task
args, deps, and env in inheriting tasks.
- Fixed an issue where token variables and environment variables used within task args together
would not be replaced correctly.
1.29.0
🚀 Updates
- Implemented a new affected project tracker that is more accurate and more powerful.
- Can now control the depth of upstream (dependencies) and downstream (dependents).
- Affected information now logs more information and is included in reports/JSON.
- Added
--upstream and --downstream options to moon query projects.
- Coming soon for affected tasks as well!
- Implemented experimental support for a new configuration language, Pkl!
- Pkl is programmable, allowing for variables, loops, conditionals, and more.
- Added a new task option,
cacheLifetime, that controls how long a task will be cached for.
- Added a new task merge strategy,
preserve, that preserves the original inherited value.
- Added a new setting
vcs.hookFormat to .moon/workspace.yml, that can customize the shell/file
format for hooks.
- Added "sync workspace action" support to toolchain plugins. This is our first step in supporting
toolchains via WASM plugins.
- Updated task
outputs to support token and environment variables.
- Updated
moon query projects to include the project description as a trailing value.
- Updated
moon query tasks to include the task type and platform, and the task description as a
trailing value.
🐞 Fixes
- Fixed an issue where a root project in a polyrepo would not default to
**/* inputs for tasks.
- Potential fix for an issue that occurs when multiple toolchains of the same type (2 different
Node.js versions for example) would fail in weird ways when installing in parallel.
⚙️ Internal
- Updated identifiers and targets to use compact strings.
- Updated proto to v0.41.3 (from 0.40.4).
- Updated wasmtime to v23 (from v17).
1.28.3
🐞 Fixes
- Fixed an issue where VCS hooks were not being generated in Docker (requires
.git to exist).
- Fixed an issue where projects whose
id was renamed in moon.yml wasn't being reflected when
inheriting project dependencies through the toolchain/platform integration.
- Fixed
optionalDependencies not being considered a project relationship for Bun/Node implicit
package.json detection.
1.28.2
🚀 Updates
- Updated cached task outputs to now be prefixed with the task target when printing to the console.
- Updated Bun/Yarn lockfile parsing to temporarily log a warning on parse failure instead of exiting
with an error. This change was made as there are currently no actionable or human-readable error
messages.
🐞 Fixes
- Fixed an issue where empty lines were being trimmed while streaming task console output.
- Fixed an issue where tasks that errored before the command is executed, would swallow the error
in
moon ci.
- It would also put the task in a non-failed state depending on the order of operations. This
should be correct now.
1.28.1
🚀 Updates
- Added caching around
bun bun.lockb commands, instead of running them for every task.
- Updated and loosened identifier naming restrictions.
- Updated environment variable substitution to support different outputs when a variable is missing,
based on a trailing flag syntax.
$FOO or ${FOO} - If variable is missing, keeps the original syntax (current default).
$FOO? or ${FOO?} - If variable is missing, replaces with an empty string.
$FOO! or ${FOO!} - Ignores variable substitution and preserves the syntax (without !).
🐞 Fixes
- Fixed an issue where an affected task with files that contain non-standard characters would fail
to run because Bash expansion fails. We now quote file paths that contain
*, $, +, and [].
⚙️ Internal
1.28.0
💥 Breaking
- Extensions (WASM plugins) must implement the
register_extension API. All built-in extensions
have been updated.
🚀 Updates
- Resolved the
actionPipelineV2 experiment and the new pipeline is now always enabled. The old
pipeline code has been deleted. If you run into any problems, please report an issue!
- Resolved the
strictProjectAliases experiment and enabled its functionality going forward.
- Added a
preset task setting, that enables a collection of task options.
- Will be replacing the
local setting, which is now deprecated.
- Added an
os task option, which allows a specific operating system to be targeted for the task.
- Added a
@meta token function that can access project metadata.
- Added
$projectName, $projectChannel, and $projectOwner token variables.
- Added
codeowners.requiredApprovals setting to .moon/workspace.yml, that will apply
requirements to all paths.
- Added a new experiment
disallowRunInCiMismatch, that errors when a task that is runInCI
enabled depends on a task that is runInCI disabled. These kinds of relationships cause a handful
of issues in the pipeline.
- Currently this only applies to
moon ci and may also apply to moon run in the future.
- Updated the terminal checkpoint (4 squares) colors to better reflect their state.
- Cached tasks continue to be blue, but non-cached but successful tasks are now green.
- Announcements are now yellow.
- Updated
MOON_TOOLCHAIN_FORCE_GLOBALS to support filtering by tool IDs, instead of applying to
everything.
⚙️ Internal
- We've sunset the CI insights feature in moonbase. We will no longer be tracking CI run history.
This is a retroactive change that applies to all moon versions.
- Updated proto to v0.40.4 (from v0.39.7).
1.27.10
🐞 Fixes
- Fixed an issue around running dependents when a dependency is affected in CI.
1.27.9
🐞 Fixes
- Fixed a regression where the "primary target" detection would include far too many targets. This
would result in passthrough arguments being unintentionally passed deeper.
- Fixed a regression where dependent tasks would always run in CI.
1.27.8
🚀 Updates
- We now log messages when inheriting values from the root
.prototools.
🐞 Fixes
- Fixed a panic that occurs in the action graph builder.
- Fixed an issue where the root
.prototools wasn't always loaded.
1.27.7
🐞 Fixes
- Fixed an issue where codeowners
requiredAppprovals wouldn't allow 1.
- Fixed an issue where a task that depends on another task that has
runInCI: false, would not run
as affected in moon ci because the dependency task was skipped.
1.27.6
📢 Notice
There have been reports of the moon.exe binary being flagged as a Trojan on Windows. This looks to
be a common false positive (Wacatac.B!ml) that targets Rust built binaries (as seen in the
Tauri project as well).
While this isn't a simple fix on our end, we're publishing a new binary to replace the old one. You
may also have to unquarantine moon on your system. And lastly, we also suggest
adding an exclusion for moon.exe to Windows Defender.
⚙️ Internal
- Updated proto to v0.39.7 (from v0.38.3).
- Updated Rust to v1.80.
- Updated dependencies.
1.27.5
🐞 Fixes
- Fixed an issue where token expansion would clobber variable replacement when multiple variables
are used.
- Fixed internal tasks being displayed in
moon query results.
1.27.4
🐞 Fixes
- Fixed an issue where
moon docker scaffold would not respect .gitignore files.
- Fixed an issue where task hashing would potentially hash too many files when extracting touched
files from
git status.
- Fixed an issue where the automatic dependency installation wasn't triggering when switching
branches.
1.27.3
🚀 Updates
- Added
project.metadata to moon.yml so that custom fields can be defined.
- Improved some task related error messages to include more information.
🐞 Fixes
- Fixed an issue where the new action pipeline wouldn't wait for in-flight moonbase (remote caching)
requests to finish. The old pipeline was not affected.
- Fixed
@in and @out tokens not being able to reference other token functions.
1.27.2
🐞 Fixes
- Fixed an issue where file groups expanded with task
script or env weren't resolving relative
to the project or workspace root (based on options).
⚙️ Internal
- Updated proto to v0.38.3 (from v0.38.2).
1.27.1
🚀 Updates
- Removed the concurrency limit when running persistent tasks.
🐞 Fixes
- Fixed an issue where task scripts would error with "command not found" (caused by over
escaping/quoting).
- Fixed an issue where a persistent task may not run or error with a missing dependency hash, if ran
alongside many other persistent tasks.
- Fixed an issue where "build" dependencies were being synced as project references.
- Fixed an issue where the install dependencies action wouldn't run if the vendor directory
(node_modules) was missing, but our operation was previously cached.
- Fixed an issue where token variables were not being replaced in task scripts.
1.27.0
🚀 Updates
- Enabled the
experiments.actionPipelineV2 setting in .moon/workspace.yml by default.
- If you run into any issues running tasks, disable this setting and report an issue.
- Added a new task field
script, as an alternative to command + args.
- Scripts support multiple commands (
&&), pipes, and redirects.
- Scripts do not support task inheritance argument merging.
- Scripts are always ran in a shell.
- Added a new command,
moon docker file, that can be used to generate an initial multi-stage
Dockerfile for a project.
- Added new
docker settings to both .moon/workspace.yml and moon.yml, allowing it to be
configured at the workspace and project levels.
- Added support for murex shells.
- Updated both
unixShell and windowsShell task options.
- Improved the "automatically install dependencies if a manifest/lockfile has changed" flow. This
should trigger less than before.
- We now generate JSON schemas for our configuration files to
.moon/cache/schemas, so that they
can be dynamically created based on the current moon version and environment.
- Is automatically generated when running a task.
- Added a
moon sync config-schemas command to manually run this operation.
- When writing JSON and YAML files, we attempt to write back to the file with its original
indentation.
🐞 Fixes
- Fixed action operations not being present in the run report when a task fails to run.
- Fixed stdout/stderr not being included in the summary review of failed tasks.
🧰 Toolchain
- Node
- Added a
node.syncPackageManagerField setting, to control the packageManager field in
package.json.
- Yarn
- Will no longer call
yarn set version and instead rely entirely on proto's toolchain.
⚙️ Internal
- Updated proto to v0.38.2 (from v0.37.2).
1.26.7
🚀 Updates
- Updated
bun.installArgs and node.bun.installArgs to stay in sync.
🐞 Fixes
- Fixed
moon run --affected not auto-installing dependencies in CI.
- Fixed an issue where the project graph cache would not invalidate based on certain environment
variables.
- Fixed an issue where our console would be prematurely dropped, causing output flushing issues.
1.26.6
🐞 Fixes
- Fixed a regression where
pwsh.exe would not fallback to powershell.exe when the former does
not exist.
- Respect
CARGO_HOME during automatic rustup installation.
1.26.5
🚀 Updates
- Updated home-based environment variables, like
CARGO_HOME, to support relative paths.
🐞 Fixes
- Fixed an issue where globs wouldn't match when leading with
./.
⚙️ Internal
- Updated proto to v0.37.2 (from v0.37.1).
1.26.4
🐞 Fixes
- Fixed an issue where the shell could not be detected, and would potentially hang.
1.26.3
🐞 Fixes
- Potential fix for a deadlock that occurs when running
moon docker scaffold.
- Reverted the default shell back to
sh instead of bash when one could not be detected.
1.26.2
🐞 Fixes
- Fixed the
ciReport.json file not being created with the experimental pipeline.
- Fixed the wrong version being displayed in
--version and in logs.
⚙️ Internal
- Downgraded WASM runtime to fix potential issues.
1.26.1
🐞 Fixes
- Re-released because of an npm version mismatch issue.
1.26.0
💥 Breaking
- Reworked webhooks to more closely align with our current data structures.
- Renamed
target.* events to task.*, and *.finished to *.completed.
- Removed the
pipeline.aborted event. Instead, an aborted field is now passed to
pipeline.completed.
- Replaced the
action field with a new node field within task.* events.
- Reworked
pipeline.completed entirely. Instead of calculating values for you, we now pass all
results allowing you to calculate them yourself.
🚀 Updates
- Rewrote the actions/tasks pipeline from the ground-up. Is currently experimental and must be
enabled with the
experiments.actionPipelineV2 setting in .moon/workspace.yml.
- Increased performance.
- Better concurrency handling and scheduling.
- More accurately monitors signals (ctrl+c) and shutdowns.
- Tasks can now be configured with a timeout (
options.timeout setting).
- Some operations within actions are now ran in parallel.
- We renamed many of the action labels (
SyncNodeProject(app) -> SyncProject(node, app)).
- Added a global
--dump flag, that will dump a trace profile that can be inspected in
chrome://tracing.
- Updated
moon completions command to support Nushell.
- Updated task option
unixShell with new options: ion, nu (nushell), pwsh (powershell), xonsh.
- Updated task option
windowsShell with new options: elvish, fish, nu (nushell), xonsh.
- Updated CLI command execution to be more performant, and to reduce our usage of concurrent locks.
- Internal components (like cache engine, or project graph) are now lazy-loaded when required,
instead of created upfront.
⚙️ Internal
- Updated proto to v0.37.1 (from v0.36.2).
- Updated Rust to v1.79.
1.25.6
🐞 Fixes
- Fixed a potential deadlock when installing tools.
⚙️ Internal
- Updated proto to v0.36.2 (from v0.36.0).
1.25.5
🐞 Fixes
- Fixed an issue where multiple Bun tools would try to install and collide.
- Fixed an issue where the
package.json packageManager field would be set with an invalid
version specifier.
1.25.4
🚀 Updates
- Updated
bun.version and node.bun.version to stay in sync when one is defined and the other
isn't. This helps to avoid tool discrepancies.
🐞 Fixes
- Fixed an issue where persistent tasks depending on each other would sometimes error with
"Encountered a missing hash".
- Fixed nightly and canary releases not showing the correct version in
moon --version.
1.25.3
🚀 Updates
- Improved error messages around git version and worktree parsing.
🐞 Fixes
- Fixed
git version parsing when the version contains invalid semver parts.
🔋 Extensions
- Updated
download to v0.0.5.
- Updated
migrate-nx to v0.0.5.
- Updated
migrate-turborepo to v0.1.2.
- Added Turborepo v2 support.
1.25.2
🚀 Updates
- Added a check to
moon docker scaffold that ensures that .moon/cache is ignored in a root
.dockerignore file. This helps to avoid interoperability issues.
- Added more logs to
moon docker commands to help uncover future issues.
🐞 Fixes
- Fixed an issue where
noop tasks would not cache / invalidate cache. This is a regression from
the recent task runner changes.
⚙️ Internal
- Updated proto to v0.36.0 (from v0.35.4).
1.25.1
🚀 Updates
- Rewrote process failure error messages to include exit status information. This should help
uncover processes killed by signals, and help debug the -1 exit code issues.
1.25.0
💥 Breaking
- Removed the following webhook events associated with task outputs:
target-output.archiving,
target-output.archived, target-output.hydrating, target-output.hydrated,
target-output.cache-check.
🚀 Updates
- Rewrote the task runner from the ground up:
- Improved handling and reliability of output archiving and hydration.
- Streamlined the task execution (child process) flow.
- Now tracks metrics for individual operations, like hash generation, output hydration, task
execution, and more. Can be inspected in the run report.
- Added a
--summary flag to moon run and moon check that will include a summary of all actions
that were processed/failed within the pipeline. This is the same output used in moon ci.
- Added a new console reporting layer that handles the rendering of output in the terminal.
- This enables us to support additional reporters in the future, each with unique UIs.
- Slightly tweaked our current UI rendering. You may notice some differences.
- Updated external configuration files (via https extends) to be cached for 24 hours.
- This will fix issues with offline mode.
- Greatly reduced the amount of concurrent locks being held during task execution. May see slight
performance improvements.
🐞 Fixes
- Fixed an issue where actions within the run report were not reflecting the correct status of their
last execution attempt.
- Fixed an issue where "have outputs been created" checks would fail if outputs only contained
negated globs, coupled with literal paths.
- Fixed an issue where
.prototools in the workspace root was not being respected when running moon
commands in a sub-directory.
- Fixed
PROTO_*_VERSION environment variables being set to *, resulting in unexpected versions
being resolved.
⚙️ Internal
- Updated proto to v0.35.4 (from v0.34.4).
- Updated macOS binaries to be built on macos-12 instead of macos-11.
1.24.6
🐞 Fixes
- Reworked the binary provided by
@moonrepo/cli to work better on Windows.
1.24.5
🐞 Fixes
- Fixed an issue where proto managed tools may error with "Failed to detect an applicable version".
1.24.4
🐞 Fixes
- Fixed a regression where
runInCI was being overzealously applied to moon run commands.
- Fixed generated VCS hooks not containing a trailing newline.
1.24.3
🐞 Fixes
- Fixed an issue where internal tasks would still run when running a task using "closest project"
detection.
- Fixed an issue where task's with
runInCI weren't always being filtered properly.
1.24.2
🐞 Fixes
- Fixed task
deps.env not supporting variable substitution.
- Fixed an issue where Git hooks would overwrite non-local hooks. The
core.hooksPath setting is
now only used if the path is within the current repository.
1.24.1
🐞 Fixes
- Fixed an issue where versions in
.prototools weren't being respected.
- Fixed task
deps.args and deps.env not expanding tokens correctly.
1.24.0
🚀 Updates
- Added an experimental
moon templates command, that lists all available codegen templates.
- Added a
--dependents flag to moon project-graph <id> and moon query projects, to include
downstream dependents of a focused/affected project.
- Added a
mutex task option, allowing for exclusivity and to ensure only 1 task is running at a
time for the same mutex.
- Added a
runner.autoCleanCache setting to .moon/workspace.yml, allowing the post-run clean
mechanism to be controlled.
- Updated
moon ci to automatically determine base/head revisions based on your current CI provider
(when applicable).
- Updated
moon generate:
- When passing variables as command line arguments, they are now entirely modeled after the
template configuration.
- Booleans and negated booleans now work better.
- Numbers now support negative values.
- Multiple values can now be passed for enums when
multiple is enabled.
- If a variable value is passed as an argument, we no longer prompt for it.
- Internal variables will now error when passed as an argument.
- Updated action graph and project graph visualization:
- Slightly tweaked the colors to be easier to read.
- Updated edges to use chevron arrows.
- Added a new layout system to organize node/edges, controlled by the
?layout= query parameter.
- Supported layout options:
dagre (default), klay, grid, breadthfirst
- Updated root-level tasks to have no inputs by default, instead of
**/*. This is typically what
users want, to avoid greedy tasks.
🐞 Fixes
- Fixed YAML schema validation not allowing custom languages for the project
language field.
- Fixed an issue where Bun and Node would both attempt to install dependencies, resulting in
collisions.
- To resolve this issue, we currently prioritize Node over Bun if both tools are enabled.
- If you have both and want to use Bun, set Node's package manager to
node.packageManager: 'bun'.
- Attempted fix for "too many open files" when moon is cleaning cached artifacts.
⚙️ Internal
- Updated proto to v0.34.4 (from v0.32.2).
1.23.4
🐞 Fixes
- Fixed an issue where leading
./ in input/output globs would cause matching failures.
- Fixed an issue where root-level projects were not being marked as affected in
moon query.
- Fixed an issue where
moon docker scaffold would copy all sources when a project depends on a
root-level project.
1.23.3
🧩 Plugins
- Updated
bun_plugin to v0.11.
- Added Windows support.
- Will now use the baseline build on x64 Linux when available.
⚙️ Internal
- Updated proto to v0.32.2 (from v0.32.1).
1.23.2
🐞 Fixes
- Fixed an issue where input environment variables weren't always being taken into account for task
hashes.
1.23.1
🚀 Updates
- Added more CI/CD platforms to check for.
🐞 Fixes
- Fixed an issue where
moon clean wasn't removing nested files.
- Fixed an issue where
package.json syncing would create incorrect link:s for Bun.
- Fixed an issue where
moon ext would trigger a "No such file or directory" error.
🔋 Extensions
- Updated
migrate-nx to v0.0.3.
- Fixed invalid IDs when converting
package.json names.
1.23.0
🚀 Updates
- Added
git: and npm: locators to the generator.templates setting in .moon/workspace.yml.
- This allows templates to be packaged and managed outside of the workspace.
- Locations will be cloned/downloaded on-demand.
- Added an
id setting to template.yml, so that templates can customize their name (instead of
using the folder name).
- Added a
variables() function for templates that returns an object of all variables available.
- Added new functionality for template variables in
template.yml:
- New
order setting to control the order in which they are prompted for.
- New
internal setting that ignores values passed on the command line.
- Updated enum
default settings to support an array of values.
- Added an
internal task option, which marks tasks as internal only.
- Updated task inheritance to support stack-based configuration, such as
.moon/tasks/node-frontend.yml or .moon/tasks/bun-backend-application.yml.
- Updated
moon project and moon task to include the configuration files that tasks inherit from.
- Updated
moon task to include the modes it belongs to.
🐞 Fixes
- Fixed an issue where a project's
platform was being detected as node (when not enabled), and
should have been bun. If you're using both bun and node in the same workspace, moon has a
hard time detecting which should be used for what project. If you run into issues, explicitly set
the platform in the project's moon.yml.
- Fixed an issue where template files couldn't import/include/extends files from extended templates.
- Fixed template enum variable default values being able to use a non-supported value.
⚙️ Internal
- Configuration JSON schemas are now included within each GitHub release.
- Updated proto to v0.32.1 (from v0.31.4).
- Updated Rust to v1.77.
1.22.10
⚙️ Internal
- Added more logging around our WASM plugins.
- Added a
MOON_DEBUG_WASM environment variable, for including additional logging output, and
optionally dumping memory/core profiles.
1.22.9
🐞 Fixes
- Fixed an issue with
moon docker scaffold where Rust projects in the workspace skeleton would
fail to compile as they were missing a lib/main entry point.
- Fixed an issue with
moon docker prune where an unknown project type would trigger toolchain
errors.
1.22.8
🐞 Fixes
- Fixed an issue where task hashing would attempt to hash invalid file paths, when moon is located
within a nested git repository.
1.22.7
🐞 Fixes
- Fixed an issue where environment variable substitution would trigger recursively when referencing
itself.
1.22.6
🚀 Updates
- We now include the exit code of a failing task in the logs for easier debugging.
🐞 Fixes
- Fixed an issue where the wrong path was being displayed for the task message "in ...".
⚙️ Internal
- Updated proto to v0.31.4 (from v0.31.2).
1.22.5
🐞 Fixes
- Fixed
env variable substitution not being able to reference values from an .env file.
- Fixed an issue where moon would move an existing proto binary when installing proto, triggering
permission issues.
1.22.4
🐞 Fixes
- Fixed an issue where deleted but uncommitted files would log a hashing warning.
- Fixed an issue where parsing
bun.lockb would fail if using github: protocols.
⚙️ Internal
- Updated proto to v0.31.2 (from v0.30.2).
1.22.3
🚀 Updates
- Updated our project constraint enforcement to take the new
stack setting into account. For
example, frontend applications can now depend on backend applications, where as previously they
could not.
1.22.2
🐞 Fixes
- Fixed an issue where VCS hooks were being created in Docker, triggering cache issues.
1.22.1
🚀 Updates
In v1.22, we made a change to affected tasks that
pass all inputs as arguments, instead of passing .. This change was made to not overzealously
pass files to the task that it doesn't care about, but it ended up causing problems for certain
commands.
We didn't want to revert the change, but it also wasn't easy to fix without causing other issues, so
as a compromise, we opted to introduce a new task option, affectedPassInputs to handle this
functionality.
1.22.0
🚀 Updates
- Added
configuration and scaffolding variants to the project type setting in moon.yml.
- Updated project constraints to support these new variants.
- Added a
stack setting to moon.yml, for categorizing which tech stack it belongs to.
- Supports
frontend, backend, infrastructure, and systems.
- Added a
projectStack field to the query language (MQL).
- Added a
$projectStack token variable for tasks.
- Updated the
moon query projects command to support a --stack option, and include the stack
in the output.
- Updated the
moon project command to include the stack in the output.
- Added a
description setting for tasks, for providing human-readable information.
- Updated the
moon project and moon task commands to include the description in the output.
- Added an
installArgs setting for bun/npm/pnpm/yarn in .moon/toolchain.yml, to customize the
args used when installing dependencies.
- Added a new built-in extension,
migrate-nx, for migrating from Nx to moon.
- Will convert all
nx.json, workspace.json, and project.json files.
- Updated task input environment variables to support a wildcard match using
*, for example
$VITE_*.
- This will include all environment variables in the current process that starts with
VITE_.
- Updated the
envFile task option to support a list of file paths.
- Updated the
migrate-turborepo extension.
- Removed the requirement of moon's project graph. Will now scan for turbo.jsons instead.
- Updated affected tasks to use
inputs as the list of files provided, instead of ..
🐞 Fixes
- Fixed an issue where
bun install was not running with --production in Docker prune.
- Fixed an issue where invalid IDs passed to certain commands would trigger a panic.
- Fixed an issue where
$PWD in a task was pointing to the wrong directory.
🧩 Plugins
- Updated
deno_plugin to v0.9.1.
- Added Linux ARM64 support (requires Deno >= v1.41).
- Updated
rust_plugin to v0.8.1.
- Uses the full triple target when installing and uninstalling toolchains.
⚙️ Internal
- Updated Rust to v1.76.
- Updated proto to v0.30.2 (from v0.29.1).
1.21.4
🐞 Fixes
- Fixed VCS hooks on Windows generating invalid PowerShell commands.
1.21.3
🐞 Fixes
- Fixed a panic that would occur when running an action and path stripping would fail.
1.21.2
🐞 Fixes
- Attempted fix for
liblzma.5.dylib issues on macOS arm64.
1.21.1
🚀 Updates
- Added shallow checkout detection to help avoid failing Git commands.
- If detected in
moon ci, is a hard failure.
- If detected in
moon run, will disable affected checks.
1.21.0
🚀 Updates
- Added Deno tier 3 support.
- Will download and install Deno into the toolchain when a
version is configured.
- Will parse the
deno.lock lockfile to extract and resolve dependencies.
- Will hash manifests and inputs for Deno specific caching.
- Added a
deno.version setting to .moon/toolchain.yml.
- Added a
toolchain.deno setting to moon.yml.
- Updated
moon bin and moon docker commands to support Deno.
- Added a new built-in extension,
migrate-turborepo, with new functionality.
- Replaces the previous
moon migrate from-turborepo command.
- Added Bun support behind a new
--bun flag.
- Added support for
globalDotEnv, dotEnv, and outputMode.
- Scripts now run through a package manager, instead of
moon node run-script.
- Root-level tasks will now create a root
moon.yml, instead of warning.
- Added
unixShell and windowsShell task options, so that the underlying shell can be configured
per task.
- Added
bun.inferTasksFromScripts setting to .moon/toolchain.yml, for compatibility with
Node.js.
- Added environment variable support to
fileGroups.
- Added a
@envs(group) token function for referencing environment variables.
- Added a
--quiet global argument, for hiding non-critical moon output.
- Deprecated the
moon node run-script command. Run the task through a package manager instead,
like npm run or yarn run.
- Updated tasks with glob-like arguments to automatically enabled the
shell option, so that glob
expansion works correctly.
- Updated interactive tasks to not be shutdown when receiving a CTRL+C signal, and instead allow
them to handle it themselves, and cleanup if necessary.
- Implemented a new console layer for writing to stdout/stderr.
- Logs are now buffered and written periodically.
- Previously they were written immediately, which required locking std each call.
- Should see some minor performance improvements.
🐞 Fixes
- Fixed an issue where the action graph would create incorrect nodes when a tool utilizes dependency
workspaces, and a project is not within the workspace.
- Fixed an issue where glob based arguments were overlay escaped.
- Fixed console checkpoints (the 4 squares) showing the wrong working directory.
⚙️ Internal
- Updated proto to v0.30.0 (from v0.29.1).
1.20.1
🚀 Updates
- Removed the maximum concurrency limit from persistent tasks.
🐞 Fixes
- Fixed
moon docker scaffold not copying the project specific moon.yml file, resulting in a
skewed project graph.
1.20.0
🚀 Updates
- Added a new extension plugin system.
- An extension is a WASM plugin that is not built into moon's core:
https://github.com/moonrepo/moon-extensions
- Extensions can be executed with the new
moon ext command.
- The community can build and publish their own extensions!
- Added a
taskOptions setting to .moon task configs, allowing default task options to be
defined.
- These options will be merged and inherited as part of the configuration chain.
- Added an
optional field to task deps, allowing the dependency to be optional during
inheritance.
- Added a "Tags" view to the VSCode extension.
- Updated proto installation to trigger for all applicable commands, not just
moon run,
moon check, and moon ci.
- Will also use the global proto version if available when there's no internet connection, and the
moon required proto version has not been installed.
🐞 Fixes
- Fixed Git version parsing when using VFSForGit.
🧩 Plugins
- Updated
bun_plugin to v0.9.
- Updated
node_plugin and node_depman_plugin to v0.9.
- Changed the
bundled-npm and intercept-globals settings to be false by default (instead of
true).
- Updated
rust_plugin to v0.8.
⚙️ Internal
- Updated proto to v0.29.1 (from v0.26.4).
1.19.3
This fixes a bad 1.19.2 release.
1.19.2
🐞 Fixes
- Fixed another location where the
proto binary was not available.
1.19.1
🐞 Fixes
- Fixed
proto binary not being available in a Dockerfile when running moon docker commands.
- Fixed our
@moonrepo/cli postinstall script not working correctly for Bun Arm64.
1.19.0
💥 Breaking
- Removed the
experiments.interweavedTaskInheritance setting from .moon/workspace.yml.
Interweaved inheritance is now always enabled (was previously true by default).
- Removed the
experiments.taskOutputBoundaries setting from .moon/workspace.yml. We opted to
remove boundaries entirely, as they caused more problems than solved. Task outputs may now overlap
without issue.
🚀 Updates
- Updated
implicitDeps in .moon/tasks.yml and task deps in moon.yml to support arguments and
environment variables for the dependency target.
- Updated the action graph and pipeline to not run the same target (but with different arguments
and environment variable variations) in parallel, to avoid unexpected collisions.
- Updated VS Code extension to support multiple VS Code workspace folders.
- Improved code generation and templates:
- Added a
destination field to template.yml, to customize a default location.
- Added a
extends field to template.yml, allowing templates to extend and inherit other
templates.
- Updated
[var] syntax to support filters: [var | camel_case].
🧩 Plugins
- Updated
bun_plugin to v0.7.
- Updated
node_plugin and node_depman_plugin to v0.7.
- Updated
rust_plugin to v0.6.
⚙️ Internal
- Updated Rust to v1.75.
- Updated proto to v0.26.4 (from v0.25).
1.18.5
🚀 Updates
- Reworked duplicate project ID/alias detection to be more accurate. Will also now error instead of
warn when a duplicate is detected.
- For aliases, the error can be disabled with the new
experiments.strictProjectAliases setting
in .moon/workspace.yml.
- For project IDs, the error can not be disabled, as conflicting IDs will cause issues with the
project graph.
🐞 Fixes
- Fixed glob based project locating to not log warnings when a file is found and it starts with
.
(ignore dotfiles).
- Fixed project aliases potentially overwriting a project with the same name.
1.18.4
🚀 Updates
- Updated the proto installation step to download, unpack, and install using Rust, instead of
relying on our Bash/PowerShell scripts. This should remove the requirement that openssl, tar, and
other environment tools must exist.
⚙️ Internal
- Updated proto to v0.25.3.
1.18.3
🐞 Fixes
- Fixed more issues in relation to custom project IDs not resolving correctly.
⚙️ Internal
- Improved some error messages with more information.
1.18.2
🚀 Updates
- Silenced proto migration warnings when ran in the context of moon.
🐞 Fixes
- Fixed an issue where
@dirs and @files tokens didn't always work correctly in outputs.
- Fixed the
@moonrepo/cli package pulling in different @moonrepo/core-* versions
⚙️ Internal
- Updated proto to v0.25.2.
1.18.1
🐞 Fixes
- Fixed an issue where we would install
proto even when not required.
- Fixed an issue where implicit dependencies were not resolving correctly when projects were
renamed.
1.18.0
🚀 Updates
- Rewrote toolchain based task running to use a path based approach.
- Instead of manually locating an executable, we now rely on
PATH to locate the executable.
- Non-system tasks can now be wrapped in a shell using the
shell option.
- This approach will now benefit from proto shims and binaries.
- We'll also download and install the
proto binary if it does not exist.
- Reworked the
moon init command.
- Will no longer scaffold the toolchain configuration by default.
- The tool to scaffold into a toolchain can be passed as an argument.
- The path to initialize in is now behined the
--to option.
- Added support for the
bun tool.
- Simplified the workflow overall.
- Updated
moon.yml to support customizing the project name using the id field.
- Can be used to override the project name derived in
.moon/workspace.yml.
- Added a
MOON_INSTALL_DIR environment variable, to control where the moon binary is installed
to.
🐞 Fixes
- Fixed
moon upgrade failing when not ran in a moon workspace.
- Fixed
CODEOWNERS being written with double trailing newlines.
🧩 Plugins
- Updated
bun_plugin to v0.6.
- Updated
node_plugin and node_depman_plugin to v0.6.1.
- Updated
rust_plugin to v0.5.
⚙️ Internal
- Improved string allocation and performance for queries, task tokens, and process commands.
- Improved remote caching flow and handling.
- Updated proto to v0.25.
1.17.4
🐞 Fixes
- Fixed an issue where executing moon (and indirectly proto) would run into privilege access issues
on Windows.
- Fixed
typescript.includeProjectReferenceSources and typescript.syncProjectReferencesToPaths
settings not including project references that were manually added (not auto-synced).
- Fixed the "a project already exists with alias" warnings when using Bun and Node together.
⚙️ Internal
- Added canary release support.
- Enabled wasmtime caching, which should improve performance of WASM plugins by 10-20%.
- Updated proto to v0.23.7.
1.17.3
🐞 Fixes
- Fixed an issue where we would fail to find Cargo binaries on Windows.
⚙️ Internal
- Updated proto to v0.23.3.
1.17.2
🐞 Fixes
- Fixed an issue where
cargo-binstall would error when trying to install it and it already exists.
1.17.1
🐞 Fixes
- Fixed the wrong version being reported by the CLI.
1.17.0
🚀 Updates
- Integrated full Bun support (tier 1-3).
- Will download and install Bun into the toolchain when a
version is configured.
- Will parse the
bun.lockb lockfile to extract and resolve dependencies.
- Will hash manifests and inputs for Bun specific caching.
- Added a
bun setting to .moon/toolchain.yml.
- Added a
toolchain.bun setting to moon.yml.
- Updated
moon bin and moon docker commands to support Bun.
- Updated task
platform to support "bun".
- Improved TypeScript support.
- Added a
typescript.root setting to denote the TypeScript root.
- Added a
typescript.includeSharedTypes setting, for syncing a shared types path to all
project's include.
- Added a
typescript.includeProjectReferenceSources setting, for syncing project reference files
to all project's include.
- Updated
typescript.syncProjectReferencesToPaths setting to always include the wildcard, and
not require an index file.
- Improved project reference syncing and edge case handling.
- Improved JavaScript support.
- Added
bun.rootPackageOnly and node.rootPackageOnly settings to support the "one version
rule" pattern.
- Updated automatic dependency linking to use the
build scope instead of peer scope. This
should alleviate some of the pain points with package.json syncing.
1.16.5
🐞 Fixes
- Fixed an issue where codegen would merge JSON/YAML files with the incorrect source.
- Updated file traversal to not walk outside of the workspace root.
⚙️ Internal
- Updated Rust to v1.74.
- Updated proto to v0.23.0.
- Updated dependencies.
- Updated logs to now include nanoseconds.
1.16.4
🚀 Updates
- Update project graph hashing to include git ignored
moon.yml files.
🐞 Fixes
- Fixed Yarn v1.22.x download not unpacking correctly.
🧩 Plugins
- Updated Yarn
node_depman_plugin to v0.5.1.
1.16.2/3
🚀 Updates
- Updated
projects globs to support ending in moon.yml.
- Updated
node.dependencyVersionFormat to fallback to a supported format when the chosen
node.packageManager does not support the configured (or default) version format.
- Updated to proto v0.22.0.
🐞 Fixes
- Fixed an issue where dependencies were being injected into the root
package.json, when a
root-level project was dependending on non-root project tasks.
🧩 Plugins
- Updated
bun_plugin to v0.5.
- Updated
deno_plugin to v0.5.
- Updated
go_plugin to v0.5.
- Updated
node_plugin and node_depman_plugin to v0.5.
- Updated
python_plugin to v0.2.
- Updated
rust_plugin to v0.4.
- Updated
schema_plugin (TOML) to v0.5.
1.16.1
🐞 Fixes
- Fixed
moon ci not treating dependents as "CI only" when running locally.
- Fixed the MQL parser failing on projects that contain a
..
- Fixed JSON comment stripping not handling docblock styled comments (
/** **/).
1.16.0
🚀 Updates
- Added Bun as a supported Node.js package manager:
node.packageManager: 'bun'.
- Added components and targets support for the Rust toolchain.
- Added
rust.components and rust.targets settings to .moon/toolchain.yml.
- Will automatically be installed with
rustup when the pipeline is ran.
- Added a
MOON_TOOLCHAIN_FORCE_GLOBALS environment variable, that will force all toolchain tools
to use the global binary available on PATH, instead of downloading and installing.
- Added an improved task inheritance chain resolver.
- Global and local tasks are now interweaved within the chain, where as previously global was
built first, then local.
- To fallback to the previous behavior, set
experiments.interweavedTaskInheritance: false in
.moon/workspace.yml.
- Added a new project type
automation, for projects like E2E and integration testing.
- Updated action graph cycle detection to list all nodes in the cycle (when detectable).
- Updated all npx calls to use a package manager equivalent. For example:
yarn dlx, pnpm dlx,
bunx.
- Updated to support Yarn v4.
🐞 Fixes
- Fixed an issue where
moon ci and git would fail if there's only 1 commit on the base branch.
- Fixed an issue where
runInCI was not respected when a task is a dependency of an affected task.
- Fixed an issue where the task
replace merge strategy would not apply for empty values.
⚙️ Internal
- Updated dependencies.
- Updated to proto v0.21.0.
- Pinned proto plugins to a fixed version instead of using latest.
1.15.4
🐞 Fixes
- Fixed an issue where pnpm would fail to dedupe when its toolchain version is not using a
fully-qualified version.
- Fixed an issue where
PROTO_OFFLINE wouldn't use global binaries when available.
⚙️ Internal
- Updated to proto v0.20.3.
1.15.3
🐞 Fixes
- Fixed an issue where interactive/persistent flags weren't always bubbled up the the task runner.
⚙️ Internal
1.15.2
🚀 Updates
- Updated
moon run --interactive to allow more than 1 target.
🐞 Fixes
- Fixed an issue where "raw" codegen files were sometimes being rendered, and failing with invalid
syntax.
- Fixed an issue where task dependents for the non-primary targets were being included in the action
graph.
- Fixed an issue with the project graph that would create duplicate nodes for deeply nested cycles.
- Fixed an issue where a cycle would be created in the action graph for the
SyncProject action
type.
1.15.1
🚀 Updates
- Based on feedback, we've updated the automatic dependency linking to not apply when the target
is the root-level project. This should alleviate all unwanted cycles.
🐞 Fixes
- Fixed an issue where Node.js dependency syncing would fail on
build dependencies, and be over
zealous with root-level projects.
- Improved detection of Rust
cargo-binstall package.
1.15.0
💥 Breaking
- Tasks that depend (via
deps) on other tasks from arbitrary projects (the parent project doesn't
implicitly or explicitly depend on the other project) will now automatically mark that other
project as a "peer" dependency. For example, "b" becomes a peer dependency for "a".
🎉 Release
- Rewrote the dependency graph from the ground-up:
- Now known as the action graph.
- All actions now depend on the
SyncWorkspace action, instead of this action running
arbitrarily.
- Cleaned up dependency chains between actions, greatly reducing the number of nodes in the graph.
- Renamed
RunTarget to RunTask, including interactive and persistent variants.
- Updated the action graph to process using a topological queue, which executes actions on-demand in
the thread pool when they are ready (dependencies have been met). Previously, we would sort
topologically into batches, which worked, but resulted in many threads uselessly waiting for an
action to run, which was blocked waiting for the current batch to complete.
- For large graphs, this should result in a significant performance improvement.
- Persistent tasks will still be ran as a batch, but since it's the last operation, it's fine.
- Released a new GitHub action,
moonrepo/setup-toolchain,
that replaces both setup-moon-action and setup-proto.
🚀 Updates
- Added a
moon action-graph command.
- Added a
--dependents argument to moon action-graph.
- Added the ability to skip non-
RunTask actions using environment variables.
- Deprecated the
moon dep-graph command.
🐞 Fixes
- Fixed an issue where task dependents (via
moon ci or moon run --dependents) wouldn't always
locate all downstream tasks.
⚙️ Internal
- Added in-memory caching to project graph file system lookup operations.
- Updated Rust to v1.72.
1.14.5
🐞 Fixes
- Temporarily fixed the "A dependency cycle has been detected for (unknown)" issue.
- Fixed an issue where Git hooks were not created properly when using Git worktrees.
- Fixed a panic when attempting to clean/parse a JSON string.
1.14.4
🐞 Fixes
- Fixed an issue where
moon docker scaffold was too greedy and would copy files it shouldn't.
- Fixed some
PATH inconsistencies when executing npm/pnpm/yarn binaries.
- Fixed codegen
lower_case and upper_case stripping characters.
1.14.3
🚀 Updates
- Updated
moon dep-graph to support a task in closest project, similar to moon run.
- Updated to proto v0.19.
🐞 Fixes
- Fixed an issue where local tasks could not extend global tasks using the
extends setting.
1.14.2
🐞 Fixes
- Fixed an issue where non-YAML files in
.moon/tasks would be parsed as YAML configs.
- Fixed an issue where arguments were not passed to generated Git hooks.
- Fixed an issue where moonbase would fail to sign in in CI.
- Fixed an issue where a root project with aliases, that has self referential tasks, would trigger a
stack overflow error.
1.14.1
🐞 Fixes
- Fixed an issue when using a global version of npm/pnpm/yarn, and the wrong arguments were being
passed to commands.
- Fixed the "running for 0s" message constantly logging for interactive tasks.
1.14.0
🚀 Updates
- Added a
moon run shorthand, where "run" can be omitted. For example, moon run app:build can be
written as moon app:build.
- This only works for targets that contain a
:.
- Updated
moon ci to support running an explicit list of targets, instead of running everything.
- Updated
node.version, npm.version, pnpm.version, yarn.version, and rust.version to
support partial versions and requirements/ranges like 1.2, 1, or ^1.2.
- Updated
.moon/tasks to support nested folders, for better organization of task files.
⚙️ Internal
- Improved handling of certificates and proxies.
- Updated to proto v0.18.
1.13.5
🐞 Fixes
- Fixed an issue where the
projectName query would not work correctly.
1.13.4
⚙️ Internal
1.13.3
🐞 Fixes
- Fixed an issue where tool globals directory was not being correctly located.
- Fixed a panic when using the
rust toolchain and attempting to install bins.
1.13.2
🐞 Fixes
- Fixed an issue where
pnpm or yarn would panic based on configuration combination.
1.13.1
🐞 Fixes
- Fixed an issue where tasks depending on arbitrary project tasks would fail to build a partial
project graph.
- Fixed an issue where task
deps within global tasks would not apply exclude/rename overrides.
- Fixed an issue with asset/binary files not working correctly with codegen templates.
- Fixed an issue where
moon upgrade would require a workspace.
1.13.0
🚀 Updates
- Added an
allowFailure task option, allowing tasks to fail without bailing the entire run.
- Tasks allowed to fail cannot be depended on.
- Added colors to command line
--help menus.
- Updated
runner.archivableTargets to support tag scoped targets.
- Updated
moon query tasks to filter out projects with no tasks.
- Updated
moon query tasks --affected to filter based on affected task, instead of affected
project.
- Updated proto integration from v0.12 to v0.16:
- proto tools are now powered by WASM plugins, which will be downloaded by moon on-demand.
- Yarn v2+ will now download the requested version, and not downgrade to latest v1.
- Please report any issues or degradations from this migration.
- View entire proto changelog.
🐞 Fixes
- Fixed
moon init not using the remote default branch when scaffolding.
⚙️ Internal
- Cleaned up moonbase and launchpad implementations.
- Updated Rust to v1.72.
1.12.1
🐞 Fixes
- Improved failed task error messages by including information about the failing task.
- Fixed an issue where failed tasks would be cached.
- Fixed an issue where errors lost information while bubbling up the stack.
1.12.0
🚀 Updates
- Added git worktree support (experimental).
- Added an
interactive field to task options. This marks tasks as interactive, so they can use
stdin.
- Added an
extends field to task configurations. This allows tasks to extend and inherit settings
from sibling tasks.
- Updated task
env values to support token functions and variables.
- Updated task
outputs to support negated globs.
- Will now log a warning to the console if a configuration file uses the
.yaml extension.
🐞 Fixes
- Fixed an issue where
moon ci would no run affected targets based on touched files.
⚙️ Internal
- Improved caching and hashing layers.
1.11.1
🐞 Fixes
- Fixed an issue where tasks using output globs would not always hydrate from the cache.
1.11.0
💥 Breaking
- To support the new project graph, the order and priority in which environment variables are
resolved has changed. Previously it was task-level > .env file > project-level. Now it's
task-level > project-level > .env file.
🚀 Updates
- Rewrote the project graph from the ground-up:
- Lazily built using a multi-pass approach.
- Graph edges now indicate the type of relationship: development, production, build, peer.
- Updated
moon project-graph --json to include the fully expanded graph data.
- Identifiers (project names, file groups, etc) can now be prefixed with underscores (
_).
- Added Poetry detection support for Python projects.
- Added an
experiments setting to .moon/workspace.yml.
- Tasks
- Environment variables in
command and args are now substituted.
- Task
deps can now depend on tag targets (#tag:task).
- Task
env are now used when substituting values, alongside system-level.
- Task
outputs can now use token variables.
- Codegen
- Templates can be used as-is without rendering with Tera by appending
a
.raw extension.
- Query language
- Updated
project to query both project name AND alias.
- Added
projectName for only querying by name.
🐞 Fixes
- Fixed an issue where newer moonbase secret keys would fail to sign in.
- Fixed an issue where
@files token would not invalidate the project graph cache.
- Fixed an issue where changing
.env would not invalidate the project graph cache.
⚙️ Internal
- Updated to proto v0.13.
- Updated Rust to v1.71.
1.10.1
🐞 Fixes
- Fixed an issue where
.gitignore patterns weren't always applied correctly.
- Fixed an issue where
git hash-object commands would fail if moon was setup in a sub-directory.
- Fixed an issue where our "upgrade moon" message would print when requesting JSON output
(
--json), resulting in JSON parsing errors.
1.10.0
💥 Breaking
These changes are fixing edge cases that should not have been allowed, but may break existing
repos. If these changes become troublesome, we'll revert.
- Tasks that configure the same outputs will now error. This change was made as multiple tasks
writing to the same output location will cause caching and hydration issues.
- If a dependency of a task failed to run or was skipped, then the parent task will now be skipped.
🚀 Updates
- Added support for
MOON_BASE and MOON_HEAD environment variables.
- Will be used when diffing across branches or commits.
- Works for both
moon ci and moon run.
- Added
deno.bins setting to .moon/toolchain.yml.
- Added
hasher.ignorePatterns and hasher.ignoreMissingPatterns settings to
.moon/workspace.yml.
- Updated
moon ci to include a summary of all failed actions.
- Updated
moon run to compare against the previous commit when running on the default branch and
using --remote.
- Updated
rust.bins in .moon/toolchain.yml to support an object for each bin entry.
- Can denote bins as CI or local only.
- Can force install bins.
- Updated the run report to include stderr/stdout for all attempts.
🐞 Fixes
- Fixed an issue where failed target run attempts would not appear in the run report.
📚 Documentation
- Added a new in-depth "Debugging a task" guide.
⚙️ Internal
- Updated to proto v0.12.
- Modernized the code generator and project constraints implementation.
- Renamed runfile to snapshot throughout.
1.9.2
🐞 Fixes
- Fixed a panic when attempting to execute an npm package who's binary is purely Bash.
1.9.1
🐞 Fixes
- Fixed a panic when parsing the output of
git --version.
1.9.0
🚀 Updates
- Added VCS hooks management support.
- Added
vcs.hooks and vcs.syncHooks settings to .moon/workspace.yml.
- Added
moon sync hooks command.
- Added
--clean and --force flags to moon sync codeowners command.
- Updated
moon init to:
- Detect an applicable VCS provider and set the
vcs.provider setting.
- Convert a detected tool version to a fully-qualified semantic version.
- Node.js
- Moved syncing logic from
InstallNodeDeps action to SetupNodeTool action. This includes
syncing packageManager, engines, and version files. This should feel more natural.
🐞 Fixes
- Fixed an issue where task hashes would be different between Windows and Unix machines.
- Root cause is that arguments would use different path separators.
- Fixed an issue where
dev, start, or serve tasks would not always be marked as local.
- Fixed an issue where inherited tasks parameters (inputs, deps, etc) would sometimes be lost based
on the merge strategy.
- Fixed an issue with dependency graph cycle detection.
⚙️ Internal
- Updated to proto v0.11.
- Dropped SVN support since it was never finished and doesn't work.
- Improved VCS file handling, caching, and performance.
1.8.3
🐞 Fixes
- Fixed an issue where command line arguments were incorrectly escaped in Bash shells.
1.8.2
🐞 Fixes
- Updated
CODEOWNERS to take .editorconfig into account when generating.
- Fixed an issue where
git branch commands would fail on <= v2.22.
- Fixed an issue where disabling moon's cache would not disable proto's cache.
1.8.1
🐞 Fixes
- Fixed an issue where failed processes would not bubble up the original error.
- Fixed TypeScript type issues in
@moonrepo/types.
- Fixed JSON schema issues.
⚙️ Internal
- Updated to proto v0.10.5.
1.8.0
🚀 Updates
- Added code owners (
CODEOWNERS) support.
- Added
owners setting to moon.yml.
- Added
codeowners setting to .moon/workspace.yml.
- Added
moon sync codeowners command.
- Added
vcs.provider setting to .moon/workspace.yml.
- Added a new action to the graph,
SyncWorkspace, that'll be used for workspace-level checks.
- Added
workspace.syncing and workspace.synced webhooks.
- Added
MOON_OUTPUT_STYLE and MOON_RETRY_COUNT environment variables.
- Rust
- Improved Cargo workspace root and members detection.
⚙️ Internal
- Deprecated the
moon sync command, use moon sync projects instead.
- Refactored task inputs, outputs, and file groups to be more accurate.
- Updated Rust to v1.70.
1.7.3
🐞 Fixes
- Fixed an issue where glob task outputs were not invalidating a previous build.
- Fixed an issue where changing inputs would not mark a task as affected, when a moon workspace is
nested within a repository.
- Improved handling of ctrl+c signal detection and shutting down processes.
1.7.2
🐞 Fixes
- Node.js
- Fixed an issue where some workers/packages would fail while inheriting parent args.
- Rust
- Fixed an issue where
cargo generate-lockfile would run in the wrong directory.
1.7.1
🐞 Fixes
- Fixed some configuration bugs.
- Fixed initial bootstrap log messages not being logged.
- Fixed an issue where hydrated caches would be partially written.
1.7.0
🚀 Updates
- Rewrote configuration from the ground-up:
- Strict parsing to bubble up typos, invalid nesting, and more.
- Recursive merging and validation.
- And many more improvements.
- Rewrote error handling and rendering.
- Improved error messages.
- Added custom error messages for certain situations.
- Added support for npm lockfile v3 format.
🐞 Fixes
- Fixed an issue where colors were not being forced when passing
--color.
- Fixed an issue where
--log or MOON_LOG would error when running nested moon commands.
⚙️ Internal
- Updated to proto v0.10.
- Updated Cargo dependencies.
1.6.1
🐞 Fixes
- Fixed poor argument parsing of command line operators like
;, &&, etc.
1.6.0
🚀 Updates
- Added support for persistent tasks.
- Added
persistent task option to moon.yml (is also set via local).
- Persistent tasks run last in the dependency graph.
- Updated long running processes to log a checkpoint indicating it's still running.
- Updated task
platform detection to only use the platform if the toolchain language is enabled.
- Started migration to a newer/better logging implementation.
🐞 Fixes
- Fixed an issue where a task would panic for missing outputs.
⚙️ Internal
- Reworked file groups to use workspace relative paths, instead of project relative.
- Reworked processes to better handle command line arguments, shells, and piped stdin input.
1.5.1
🐞 Fixes
- Fixed an issue where tasks would run in CI even though
runInCI was false.
- Fixed an issue where npm, pnpm, and yarn shims were not being used from proto.
1.5.0
🚀 Updates
- Added Rust tier 2 and 3 language support!
- Added
rust as a supported platform variant.
- Added
rust setting to .moon/toolchain.yml.
- Added
toolchain.rust setting to moon.yml.
- Added support for
rust setting in .prototools.
- Updated
moon init and moon bin commands to support Rust.
- Updated
moon docker scaffold command to scaffold Cargo files.
- Updated
moon docker prune command to delete the target directory.
🐞 Fixes
- Fixed an issue where task type was
run when it should be test.
⚙️ Internal
- Reworked
moon init --yes to not enable all tools, and instead enable based on file detection.
- Cleaned up
moon init templates. Will no longer scaffold .moon/tasks.yml.
1.4.0
🚀 Updates
- Added a new target scope for tags,
#tag:task, which will run a task for all projects with the
given tag.
- Updated
moon query projects and moon query tasks to support MQL for filtering results.
- Deprecated
node.aliasPackageNames setting. Aliases will always be loaded now.
⚙️ Internal
- Upgraded to proto v0.8.
- Updated JSON schemas with missing fields.
- Rewrote ID handling for future features.
1.3.2
🐞 Fixes
- Fixed an issue where a
pnpm-lock.yaml with no packages would fail to parse.
1.3.1
🐞 Fixes
- Fixed a few issues during input hashing:
- Would attempt to include deleted files from
git status, which would log a warning.
- Would attempt to hash directories for root-level projects, which would log a warning.
⚙️ Internal
- Upgraded to proto v0.7.2.
1.3.0
🚀 Updates
- Introducing MQL, a custom query language for running advanced filters on the project graph.
- Added a
--query option to the moon run command, allowing for advanced targeting.
- Updated config loading to be strict and error on unknown fields for non-root fields.
🐞 Fixes
- Fixed an issue where proto would fail to parse
manifest.json.
⚙️ Internal
- Updated Rust to v1.69.
- Upgraded to proto v0.7.
- Improved accuracy of our globbing utilities, especially around dotfiles/dotfolders.
1.2.2
🚀 Updates
- Added
node_modules/.bin/moon as another lookup location for the moon binary when running
globally.
🐞 Fixes
- Fixed an issue where running tasks were not killed, resulting in background zombie processes.
- Fixed a few version comparisons between Yarn legacy and berry.
- Updated dependency deduping to not run if the manager version is unknown.
1.2.1
🐞 Fixes
- Fixed an issue where
$projectAlias token was not substituting correctly.
1.2.0
🚀 Updates
- Added task inheritance based on tags in the form of
.moon/tasks/tag-<name>.yml.
🐞 Fixes
- Fixed an issue where setting
MOON_COLOR would fail validation.
⚙️ Internal
- Upgraded to proto v0.6.
- Improvements to file system operations.
- Minor improvements to performance.
1.1.1
🐞 Fixes
- Fixed an issue where token function resolving would cause massive performance degradation.
1.1.0
🚀 Updates
- Added token variable substitution support for task
commands.
- Added a
moon task command, for viewing resolved information about a task.
- Updated
moon run to be able to run tasks in the closest project based on current working
directory.
- Updated
noop tasks to be cacheable, so that they can be used for cache hit early returns.
⚙️ Internal
- Upgraded to proto v0.5.
- Support pnpm v8's new lockfile format.
- Better handling for task's that execute the
moon binary.
1.0.3
🚀 Updates
- Added
hasher.batchSize to control the number of files to be hashed per batch.
- Updated new version checks to include an optional message.
🐞 Fixes
- Fixed an issue where non-input matching files were being passed to
git hash-object during the
inputs collection process. For large projects, you'll see improved performance.
- Fixed an issue where root-level input globs were not matching correctly when
hasher.walkStrategy
was "vcs".
- Fixed a deadlock where some concurrent tasks via a parent
noop task would not start or run in
parallel.
⚙️ Internal
- Upgraded to proto v0.4.
- Switched to a semaphore for restricting task concurrency.
1.0.2
🐞 Fixes
- Fixed an issue where
moon run or moon check would hang when not running in a workspace.
- Fixed an issue where workspace root finding will locate
~/.moon.
1.0.1
🐞 Fixes
- Updated
envFile to log a warning instead of triggering an error when .env. is missing.
- Updated
envFile to support workspace relative paths when prefixed with /.
- Fixed an issue where
.moon/tasks/*.yml were not scaffolded into Dockerfiles.
- Fixed an issue where a CI environment wasn't detected for some CI providers.
- Fixed a project cache issue when running tasks inside and outside of a container.
1.0.0
💥 Breaking
- Updated the installer scripts and the
moon upgrade command to install the moon binary to
~/.moon/bin.
- Removed Homebrew support.
🚀 Updates
- Added a
constraints setting to .moon/workspace.yml, allowing for project/dep relationships to
be enforced.
- Added a
hasher.warnOnMissingInputs setting to .moon/workspace.yml.
- Added a
shell task option to moon.yml that will wrap system tasks in a shell.
- Added a
tags setting to moon.yml for project categorization.
- Added a
--tags option to the moon query projects command.
- Added a
telemetry setting to .moon/workspace.yml.
- Added 5 new token variables:
$projectAlias, $date, $time, $datetime, and $timestamp.
- Updated task
env and .env files to support variable substitution using ${VAR_NAME} syntax.
- Updated system tasks to now execute within a shell.
🐞 Fixes
- Reworked how task inputs are resolved when empty
[] is configured, and all **/* is inherited.
⚙️ Internal
- Updated the new version check to only run on the
check, ci, run, and sync commands.
- Will now detect 16 additional CI environments: Agola, AppCenter, Appcircle, Azure, Bamboo,
Bitrise, Buddy, Cirrus, Codemagic, Heroku, Jenkins, Jenkins X, Netlify, TeamCity, Vela,
Woodpecker.
- Will now attempt to detect CD environments for more accurate metrics.
- We now create a cache directory tag in
.moon/cache.