Skip to content

Latest commit

 

History

History
453 lines (373 loc) · 19.1 KB

File metadata and controls

453 lines (373 loc) · 19.1 KB

Changelog

2.2.1

🚀 Updates

  • Added request retry support (via proto), that will retry up to 3 times with exponential backoff for transient errors (network issues, rate limits, etc).
  • Improved async affected tracking by another 5-10%.
  • Updated PowerShell commands to use -EncodedCommand instead of -Command to avoid quoting/escaping issues. Let us know if you run into any issues with this change.

🐞 Fixes

  • Fixed --summary not being respected in moon ci.
  • Fixed issues with graph visualizer commands failing with a JavaScript error after the v2.2 graph changes.
  • Fixed an issue where checking the remote cache for an entry before the task execution could cause the task to fail if the remote cache check errored. We now treat remote cache errors as cache misses, and allow the task to execute.
  • Fixed an issue where filtered graphs would point to the wrong data because indexes changed.

🧰 Toolchains

  • JavaScript
    • Fixed pnpm-lock.yaml parsing for pnpm v10's multi-document lockfiles, which are written when managePackageManagerVersions is enabled (the default).
  • TypeScript
    • Updated project references to start with ./ in preparation for the removal of baseUrl in TypeScript v7.

⚙️ Internal

  • Updated proto to v0.56.3 from 0.56.1.
  • Updated Rust to v1.95.0.
  • Updated dependencies.

2.2.0

💥 Breaking

  • The --json output for moon action-graph, moon project-graph, and moon task-graph commands has changed. The graph nodes are now integers instead of objects, and the node data is instead stored in a separate data object.

🚀 Updates

  • Temporarily brought back x86_64-apple-darwin (Apple Intel) as a supported operating system.
  • Affected
    • Added an experimental asynchronous version of the affected tracker, that is 100-150% faster.
      • Enable with the experiments.asyncAffectedTracking setting in .moon/workspace.*.
  • Config
    • Added MOON_PIPELINE_AUTO_CLEAN_CACHE environment variable support for the pipeline.autoCleanCache setting.
    • Added MOON_PIPELINE_CACHE_LIFETIME environment variable support for the pipeline.cacheLifetime setting.
    • Added MOON_PIPELINE_KILL_PROCESS_THRESHOLD environment variable support for the pipeline.killProcessThreshold setting.
  • 🆕 Daemon
    • Added an unstable daemon that will run in the background and process heavy operations. To start, it runs a file watcher on the workspace and invalidates caches.
    • Added a moon daemon command with start, stop, and more subcommands to manage the daemon.
    • Added an unstable_daemon setting to .moon/workspace.*.
  • Graphs
    • Improved performance of taskToolchains and taskType fields when querying the project graph.
    • Greatly reduced memory footprint of the action, project, and task graphs. Nodes in the graph are now integers instead of objects.
  • Plugin registry
    • Improved performance and memory consumption when loading plugins.
  • Task runner
    • Improved performance of task output archiving, by no longer blocking the main thread pool.
  • Toolchains
    • Updated the system toolchain to be built-in instead of an external WASM plugin that needs to be downloaded.
  • 🆕 Workspace
    • Added an experimental asynchronous version of the project and task graph builders, that utilizes a background thread pool per project to build the graph. This can improve performance by 100-170% in large workspaces.
      • Enable with the experiments.asyncGraphBuilding setting in .moon/workspace.*.
      • Unlike the sync version, the async version does not support cycles, and will not cut edges automatically to avoid cycles.

🐞 Fixes

  • Fixed an issue with VCS hooks generation that could leave around stale hooks.
  • Fixed an issue where toolchains not managed by proto directly (like Rust) would consistently re-install itself.
  • Fixed an issue where OS based tasks would error while executing if they defined outputs, and you're on a different OS.
  • Fixed an issue where proto would be installed even when toolchains were disabled with MOON_TOOLCHAIN_FORCE_GLOBALS.

⚙️ Internal

  • Updated proto to v0.56.1 from 0.55.4.
  • Updated dependencies.

2.1.4

🚀 Updates

  • Added moon toolchain download and moon extension download commands that will download all configured toolchain/extension plugins. This allows you to prime the download cache.

🐞 Fixes

  • Fixed an "unrecognized subcommand moon" error that can occur when global and local moon binaries exist.
  • Fixed an EPIPE error in streaming child processes.
  • Fixed trailing -- in task commands being stripped.
  • Potential fix for graph visualizer commands failing with a JavaScript error.

🧰 Toolchains

  • Go
    • Updated go list to not require go.mod file to run.

2.1.3

🧰 Toolchains

  • Go
    • Fixed an issue where go list was not running in the project root.
    • Fixed an issue where go list would add a project dependency to itself.
  • JavaScript
    • Will now remove node_modules during Docker prune, as some package managers don't do this automatically.
    • Removed *.config.* files from the Docker scaffold process.
  • npm/pnpm/yarn
    • Updated to always include the "shared globals" directory.
  • Python
    • Fixed install/venv args being passed incorrectly in some situations.

2.1.2

🚀 Updates

  • Updated the affected tracker to mark project/tasks as affected on-demand, instead of everything up front. This allows us to short-circuit early, improving performance for very large repos.
  • Updated many commands and call sites to load projects/tasks without expansion, slightly improving performance and memory usage.

🧰 Toolchains

  • Go
    • Added inferRelationships and inferRelationshipsFromTests settings to control go list --deps usage.
  • JavaScript
    • Updated deno.lock and yarn.lock parsing dependencies.
  • Python
    • Fixed an issue where install commands didn't have access to venv bins.
    • Fixed an issue where project dependencies were not being inferred correctly when the dependency contains extras metadata.
  • Rust
    • Updated Cargo.lock parsing dependencies.
  • TypeScript
    • Added TypeScript v6 support.

⚙️ Internal

  • Updated dependencies.

2.1.1

🐞 Fixes

  • Fixed an issue with remote caching where the batching max size and limit were not being applied correctly.
  • Fixed an issue where exclude/rename for task inheritance applied to tasks other than those in the current project.
  • Fixed an issue where toolchains that loaded project/workspace toolchain configuration would not be merged correctly.
  • Fixed an issue where task console output may appear out of order.
  • Fixed an issue with Git file hashing by temporarily re-enabling Git locks.

2.1.0

🚀 Updates

  • Environment
    • Improved our local and remote detection logic. We now also check for common remote devboxes (GitHub Codespaces, Gitpod, etc) in addition to CI environments.
  • Projects
    • Updated duplicate aliases to no longer be a hard error, and instead will apply to the first encountered project. Duplicates are possible when multiple toolchains all use the same package name (Go, Rust, Node, etc).
  • Tasks
    • Added 3 new settings to the affectedFiles option when using the object syntax:
      • filter - A list of glob patterns to filter the affected files list before passing to the task.
      • ignoreProjectBoundary - When matching affected files, ignore the project boundary and include workspace relative files. Otherwise, only files within the project are matched.
      • passDotWhenNoResults - When there are no affected files after matching and filtering, use . instead of an empty value.
    • Added a new option, runInSyncPhase, that will run the task during moon sync commands.
  • Toolchains
    • Added inheritAliases (default true) setting for each toolchain. Can toggle whether to inherit aliases for projects while extending the project graph.
    • Added installDependencies (default true) setting for each toolchain. Can toggle whether to install dependencies (via the InstallDependencies action) when running a task.

🧰 Toolchains

  • Go
    • Will now run go list --deps to determine project relationships while extending the project graph.
  • Python
    • Normalized package/dependency names to PEP 503 during graph extending.
    • Fixed an issue where package manager toolchain settings were not being inherited correctly.
  • TypeScript
    • Added a pruneProjectReferences setting that prunes non-moon managed project references when syncing.

🐞 Fixes

  • Fixed invalid JSON schema in MCP generate tool.
  • Fixed $projectTitle and $projectAliases tokens not being substituted.
  • Fixed an issue where bash may not be available (falls back to sh).
  • Fixed an issue where a task command could not end with --.
  • Fixed some issues where .config/moon was not respected.
  • Potential fix for tail-end console output not being written.

⚙️ Internal

  • Updated dependencies.

2.0.4

🧰 Toolchains

  • JavaScript
    • Added support for * versions when determining project relationships.
    • Reworked pnpm dedupe and yarn dedupe detection logic.
  • Python
    • Will now read pyproject.toml dependencies to determine project relationships.

⚙️ Internal

  • Updated proto to v0.55.4 from 0.55.2.
  • Updated Rust to v1.94.0.
  • Updated dependencies.

2.0.3

This is a re-release as the v2.0.0 release workflow failed.

2.0.2

🚀 Updates

  • Temporarily disabled shallow checkouts triggering a hard error in CI until we can implement a better solution. This means that if you have a shallow checkout, you may see incorrect affected results, or Git commands may fail.
  • Added more logs to moon docker prune to help debug edge cases.
  • Added MOON_INCLUDE_RELATIONS environment variable support for the --include-relations CLI option.
  • Added .env and .env.* as defaults to the hasher.ignoreMissingPatterns setting.

🐞 Fixes

  • Fixed an issue where the graph visualizers would not render correctly in the VS Code extension.
  • Fixed an issue where a task with shell: false would be force enabled when a glob/env was detected. We now respect the configured value.
  • Fixed an issue where "run" type based tasks would not run in CI.

2.0.1

🚀 Updates

  • Updated moon upgrade to upgrade via proto if we detect that moon is managed by proto. This will run proto install moon latest.

🐞 Fixes

  • Fixed some WASM serialization errors.
  • Fixed the moon upgrade command not handling the new v2 distribution format correctly. If you are on moon v2.0.0, the upgrade command will still be broken until you upgrade to this patch.

2.0.0

💥 Breaking

View the migration guide for a full list of breaking changes and how to easily migrate!

  • Renamed "touched files" to "changed files".

  • CLI

    • Removed canary and nightly releases.
    • Removed commands: moon node, moon migrate from-package-json, moon query hash, moon query hash-diff
    • Renamed all options and flags to kebab-case instead of camelCase.
    • Reworked many commands and their arguments. Refer to the migration guide for details.
    • Reworked console output handling. Updated --summary with different levels.
    • Reworked release distribution to use archives instead of direct executables.
  • Configuration

    • Renamed, removed, or changed many settings. Refer to the migration guide for details.
    • Renamed .moon/toolchain.yml to .moon/toolchains.yml (plural).
  • MCP

    • Updated protocol version to 2025-11-25.
    • Updated get_projects and get_tasks to return fragments, to reduce the payload size.
  • Projects

    • Reworked how the language is detected.
    • Flattened project metadata structure.
  • Tasks

    • Task inheritance now deep merges instead of shallow merges when dealing with extends and multi-global.
    • Task command and args only support simple commands now. Use script for compound commands (pipes, redirects, multiple commands, etc).
    • Removed "watcher" task preset.
    • Reworked env var merge order, substitution, and more. Refer to the migration guide for details.
    • Reworked .env handling.
      • Moved loading to occur before task execution, instead of creation.
      • Can no longer reference task env vars for substitution.
  • Toolchain

    • Removed the old platform system, and replaced it with the new WASM plugin system.
      • All old "stable" toolchains have been replaced with the new "unstable" toolchains.
  • VCS

    • Reworked the hooks layer for better interoperability.
  • WASM API

    • Removed the /cwd virtual path.
    • Renamed ProjectFragment.alias to ProjectFragment.aliases and changed its type from Option<String> to Vec<String>.
    • Removed RegisterExtensionOutput.config_schema field. Use the new define_extension_config plugin function instead.

🚀 Updates

View the announcement blog post for all updates, new features, improvements, and much more!

  • Action pipeline
    • Will now always generate a hash for a task, even if caching is disabled.
    • Applies "transitive reduction" to the graph, removing unnecessary edges for better performance.
    • Improved console output, logging, and error handling.
    • Improved parallelism when running tasks.
      • Now resolves and expands targets before partitioning.
      • Now partitions after filtering based on affected state.
  • CLI
    • New commands: moon exec, moon extension, moon hash, moon projects, moon tasks, moon query affected, moon template
    • Updated commands moon check, moon ci, and moon run:
      • Now uses moon exec under the hood.
      • Added levels to --summary.
    • Updated commands that require an identifier to prompt for it if not provided.
    • Stabilized the moonx binary (which uses moon exec under the hood).
    • Added support for .config/moon instead of .moon.
    • Added support for ... in task targets, which is an alias for **/*. This is similar to how Bazel targets work.
    • Improved stack memory usage by pushing thread data to the heap. This resolves spurious stack overflow issues.
  • Configuration
    • Added support for more formats: JSON, TOML, and HCL.
    • Improved error messages for union based settings.
    • .moon/extensions.*
      • New file for configuring extensions (formerly in workspace.extensions).
    • .moon/tasks.*
      • Added inheritedBy setting for configuration based task inheritance.
    • .moon/workspace.*
      • Added projects.globFormat setting.
      • Added defaultProject setting.
      • Stabilized remote caching.
    • moon.*
      • Added mergeToolchains task option.
      • Added "utility" task preset.
      • Added "data" stack.
  • Docker
    • Better toolchain integration.
    • Added --no-setup and --template support to moon docker file.
    • Updated project configs to override workspace configs.
  • Extensions
    • Added a new extension, unpack, for unpacking archive files.
    • Added .moon/extensions.* configuration file.
    • Added support for new plugin APIs: define_extension_config, extend_command, extend_project_graph, extend_task_command, extend_task_script, sync_project, and sync_workspace.
  • MCP
    • Added a generate tool for running the code generator.
  • Projects
    • Added a default project concept.
    • Added path based IDs instead of dir name IDs.
    • Updated projects to support multiple aliases (one from each applicable toolchain).
  • Remote cache
    • Stabilized all settings.
    • Enabled gzip/zstd compression for HTTP requests.
  • Tasks
    • Added deep merging support for task inheritance.
    • Updated command and args with better syntax parsing and error handling.
      • Better handling of quotes, escapes, and spaces.
      • Extracts env vars into the task.
    • Updated env values to support null, which would remove an inherited system env var.
    • Updated envFile option to support token/var substitution.
    • Improved .env handling:
      • Updated the parser to support more syntax.
      • Updated loading to occur before task execution, instead of creation.
      • Can now reference system/moon/task env vars for substitution.
  • Toolchains
    • Stabilized the new WASM plugin system.
    • Improved how toolchains extend env vars and paths for commands and scripts.
  • Tokens
    • Added new tokens: $projectTitle, $projectAliases, $taskToolchains
  • VCS
    • Replaced the old v1 Git implementation with a new v2 implementation.
    • Improved support for worktrees, submodules, and more.
  • WASM API
    • Added a load_extension_config_by_id host function.
    • Added define_extension_config, initialize_extension, and extend_command plugin functions.
    • Added load_extension_config, parse_extension_config and parse_extension_config_schema utility functions.
    • Added DefineExtensionConfigOutput, InitializeExtensionInput, InitializeExtensionOutput, ExtendCommandInput, and ExtendCommandOutput types.
    • Added ExtendProjectGraphInput.extension_config, ExtendTaskCommandInput.extension_config, ExtendTaskScriptInput.extension_config, SyncProjectInput.extension_config, and SyncWorkspaceInput.extension_config fields.
    • Added RegisterToolchainOutput.language field.

🧩 Extensions

  • Migrate Nx
    • Added support for the following project.json fields: targets.*.continuous
  • Migrate Turborepo
    • Added support for the following turbo.json fields: tags, tasks.*.env (wildcards and negation)
  • Unpack
    • Updated to use unzip and tar commands.

🧰 Toolchains

  • JavaScript
    • Added support for Yarn v4.10 catalogs.
    • Fixed an issue where implicit dependencies would sometimes not resolve.

🐞 Fixes

  • Fixed local executables in @moonrepo packages not being detected correctly.
  • Fixed task job parallelism to partition after tasks have been filtered based on affected state.
  • Fixed an issue where env var substitution would not process in the order they were defined.
  • Fixed an issue where ctrl+c wouldn't exit when a prompt was waiting for input.
  • Fixed an issue where project based task inputs would not be reflected internally in the input files/globs list.
  • Fixed an issue where running a task that triggers a system/moon error wouldn't output the error message. This also aborts the action pipeline correctly now.
  • Fixed an issue where errors during project graph building would not be reported correctly.
  • Fixed an issue where a negated glob in a file group would not expand properly when used as an argument.

⚙️ Internal

  • Updated proto to v0.55.2 from 0.53.2 (view v0.54 changes).
  • Updated wasmtime to v37.
  • Updated Rust to v1.93.0.
  • Updated dependencies.