Skip to main content

moon v1.38 - Go WASM toolchain, MCP tools, terminal notifications, and more!

· 4 min read
Miles Johnson
Founder, developer

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
.moon/toolchain.yml
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 the unstable_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 and go.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 the unstable_go.bins setting.
  • Automatically runs go mod or go 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 the SyncProject action for one or many projects by id.
  • sync_workspace - Runs the SyncWorkspace 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.

.moon/workspace.yml
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 with moon toolchain add.
    • View information about a toolchain plugin with moon toolchain info.
  • 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