Releases: moonrepo/moon
Releases · moonrepo/moon
v1.38.0
💥 Breaking
- WASM API
- Renamed
RegisterToolchainOutput.lock_file_name
toRegisterToolchainOutput.lock_file_names
and its type toVec<String>
. - Renamed
RegisterToolchainOutput.manifest_file_name
to
RegisterToolchainOutput.manifest_file_names
and its type toVec<String>
.
- Renamed
🚀 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
andgo.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 theSyncProject
action for one or many projects.sync_workspace
- Runs theSyncWorkspace
action.
- Added new
moon toolchain
command and sub-commands.- Add a toolchain to
.moon/toolchain.yml
withmoon toolchain add
. - View information about a toolchain plugin with
moon toolchain info
.
- Add a toolchain to
- 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.
- Added
⚙️ Internal
- Updated proto to v0.50.1 (from 0.49.4).
v1.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.
v1.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 nogit
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 forgit://
based code generation.
⚙️ Internal
- Updated dependencies.
v1.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.
- Fixed
- WASM API
- Added
SetupEnvironmentInput.globals_dir
field.
- Added
⚙️ Internal
- Updated dependencies.
v1.37.0
🔖 RFCs
- Task input additions and enhancements: #1985
🚀 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 ofrust
).- 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.
- Supports the following tools:
- Updated webhook events.
- Added
environment.initializing
andenvironment.initialized
events. - Added
root
andtoolchain
fields todependencies.installing
anddependencies.installed
events. - Deprecated the
runtime
field in all events. Will be removed once toolchain plugins are
complete.
- Added
🧩 Plugins
- Added test utilities for testing toolchain plugin functions.
- Improved cache handling and invalidation for
SetupEnvironment
andInstallDependencies
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.
v1.36.3
🐞 Fixes
- Fixed an issue where environment variables with default/fallback values (
${VAR:+default}
) were
not parsed correctly.
⚙️ Internal
- Updated dependencies.
v1.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.
v1.36.1
🐞 Fixes
- Fixed an issue where tasks would not substitute environment variables when executing, because it
did not run in a shell.
⚙️ Internal
- Updated dependencies.
v1.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 thesetup_environment
WASM API. - Added
InstallDependencies
action that executes theinstall_dependencies
WASM API.
- Added
- 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.
- Updated
- In the project graph:
- Added
--host
and--port
options tomoon action-graph
,moon task-graph
, and
moon project-graph
. - Added
--stdin
option tomoon ci
andmoon 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.
- This is a follow-up fix to the revert in a previous version. This functionality is now opt-in
- 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.
- Added an
- Updated and improved code generation:
- Added support for
array
andobject
variable types intemplate.yml
. The values must be JSON
compatible. - Updated
generator.templates
to supporthttps://
URLs that point to an archive that can be
unpacked.
- Added support for
- 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
orenv
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
andproduction
fields. - Added
InstallDependenciesOutput.operations
field. - Added
PruneDockerInput.projects
androot
fields. - Added
PruneDockerOutput
. - Added
SetupEnvironmentOutput.operations
field. - Added
SetupToolchainOutput.operations
field. - Added
SyncWorkspaceInput.toolchain_config
field. - Added
TeardownToolchainInput.version
field.
- Added
⚙️ Internal
- Updated Rust to v1.87.0.
- Updated proto to v0.49.1 (from 0.47.11).
v1.35.7
🐞 Fixes
- Reverted
moon ci
andmoon run
accepting touched files via stdin, as it's causing issues in CI
environments. Will revisit for the next release.