Skip to content

Releases: moonrepo/moon

v1.38.0

24 Jun 21:43
Compare
Choose a tag to compare

💥 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).

v1.37.3

17 Jun 17:12
Compare
Choose a tag to compare

🐞 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

15 Jun 18:54
Compare
Choose a tag to compare

🚀 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

  • Updated dependencies.

v1.37.1

06 Jun 01:57
Compare
Choose a tag to compare

📚 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

  • Updated dependencies.

v1.37.0

04 Jun 00:45
Compare
Choose a tag to compare

🔖 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 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.

v1.36.3

29 May 21:07
Compare
Choose a tag to compare

🐞 Fixes

  • Fixed an issue where environment variables with default/fallback values (${VAR:+default}) were
    not parsed correctly.

⚙️ Internal

  • Updated dependencies.

v1.36.2

25 May 22:05
Compare
Choose a tag to compare

🚀 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

21 May 21:10
Compare
Choose a tag to compare

🐞 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

19 May 18:18
Compare
Choose a tag to compare

🚀 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).

v1.35.7

13 May 19:32
Compare
Choose a tag to compare

🐞 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.