moon v1.38 - Go WASM toolchain, MCP tools, terminal notifications, and more!
In this release, we're stoked to release the Go WASM toolchain plugin, and improved MCP/AI support!
RFC: Task inheritance via inline configuration
Task inheritance is one of moon's most powerful features, allowing you to define tasks at the top-level and have them automatically inherited by projects that match certain conditions. In it's current form, task inheritance is based on the file name of the configuration file, but this approach has several limitations.
We're planning to improve task inheritance and have written up an RFC to discuss these changes. We'd appreciate any and all feedback!
New Go toolchain powered by WASM
Official Go toolchain support has been requested by the community for a long time now, and with the
somewhat stabilization of WASM plugins and the introduction of the
Rust toolchain in the last release, we felt it was finally time to add Go! To enable
Go, run our new command or add an unstable_go
entry to
.moon/toolchain.yml
.
$ moon toolchain add unstable_go
unstable_go:
version: '1.24.0'
workspaces: true
The Go toolchain releases with full tier 1, 2, and 3 support! Additionally, the following features and functionality is available when enabling the toolchain:
- Supports Go workspaces through the
go.work
file. Can be disabled with theunstable_go.workspaces
setting. - Extracts the
go.mod
module
directive as a project alias. - Extracts project relationships and dependency information from
go.mod
require
directives. - Extracts version and checksum information from
go.sum
andgo.work.sum
files. - Injects Go globals directory (
GOBIN
) into task command/script child processes. - Supports installing Go globals via
go install
commands. Can be customized with theunstable_go.bins
setting. - Automatically runs
go mod
orgo work
commands when installing dependencies. - Basic Docker image and pruning support.
We hope you enjoy this new Go toolchain. With that said, we are not Go experts, and would love to hear from you on what works, what doesn't, what can be improved, and what features you would like to see added!
New MCP tools
In our last release, we introduced the moon mcp
command,
offering deep editor integration with AI models like GitHub Copilot and Cursor. This release expands
on that by introducing 3 more tools to utilize:
get_touched_files
- Gets touched files between base and head revisions.sync_projects
- Runs theSyncProject
action for one or many projects byid
.sync_workspace
- Runs theSyncWorkspace
action.
New OS terminal notifications
This was a feature we originally scoped out during moon's inception, almost 3 years ago, but we never got around to implementing it. However, there has been some improvements to native operating system notifications in Rust lately, so it felt like a good time to finally implement it!
And on that note, we are introducing a new
notifier.terminalNotifications
setting that allows
you to receive terminal notifications for pipeline events.
notifier:
terminalNotifications: 'failure'
View the official guide for more information!
Other changes
View the official release for a full list of changes.
- 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 a
notifier.webhookAcknowledge
setting, that ensures webhooks resolve with a 2XX status code. - Updated proto to v0.50.1 (from 0.49.4).
What's next?
With toolchains plugins being stabilized more, we'd like to focus on some other areas.
- Better command line argument parsing/joining (especially for task
args
) - Better child process I/O piping
- WASM toolchain documentation