💥 Breaking
- Changed the way to disable the TypeScript toolchain in
moon.yml
.# Before toolchain: typescript: disabled: true # After toolchain: typescript: false # or null
- Removed the
--include
option frommoon docker scaffold
(it's been long deprecated). Use the
docker
settings instead.
🚀 Updates
- The TypeScript toolchain is now powered by a WASM plugin. This is our
first step in supporting plugins in core. We chose TypeScript as our 1st plugin because it was the
simplest of all the toolchains, and primarily was used for project syncing.- Plugins must be downloaded from the internet, so a connection is required on the first run. The
plugin is then cached locally. - Most of the code had to be rewritten but we tried to keep as much parity as possible. Please
report an issues or differences you encounter. - Because TypeScript is now a "true" toolchain, it will appear in the toolchains list for projects
and tasks. This is required since it runs operations in the context of the plugin. - All
typescript
settings in.moon/toolchain.yml
can now be defined as overrides in
moon.yml
.
- Plugins must be downloaded from the internet, so a connection is required on the first run. The
- Added new toolchain plugin integrations for specific features.
- Integrated into the
SyncWorkspace
andSyncProject
actions. - Integrated into all
moon docker
commands. - Integrated into the task hashing process.
- Integrated into the
- Added a new
moonx
executable, which is a shorthand formoon run
.- Right now the implementation uses Bash/PowerShell shims, but will be migrated to a true binary
executable once we rework our release process. - The shims are dynamically created the first time moon runs, relative to the executed
moon
binary.
- Right now the implementation uses Bash/PowerShell shims, but will be migrated to a true binary
- Added support for
moon run ~:build
, which will run thebuild
task in the closest project
(traversing upwards). - Added
$XDG_DATA_HOME
support when detecting the moon store. Will be used if$MOON_HOME
is not
set, and will fallback to$HOME/.moon
. - Added elapsed/timing information to child processes and WASM calls within logs.
- Improved the handling of CTRL-C, CTRL-BREAK, and other signals on Windows.
- Updated
moon init
with toolchain plugin support. - Updated
toolchain.default
inmoon.yml
to support a list of IDs. - Updated
unstable_remote.auth.headers
to support environment variable interpolation. - Updated generated JSON schemas at
.moon/cache/schemas
to dynamically include toolchain plugin
configuration. - Updated file hashing (via
git hash-object
) to continously pipe stdin to avoid hanging processes. - Deprecated
hasher.batchSize
in.moon/workspace.yml
.
🧩 Plugins
- Added new toolchain WASM APIs.
register_toolchain
- Registers the toolchain and provide metadata for detection and other
purposes.initialize_toolchain
- Provides prompts to use duringmoon init
to gather settings values.define_toolchain_config
- Defines a configuration schema for use within JSON schemas.define_docker_metadata
- Defines metadata related todocker
commands.hash_task_contents
- Injects content into the task hashing process.prune_docker
- Custom operations to run duringdocker prune
.scaffold_docker
- Custom operations to run duringdocker scaffold
.sync_project
- Runs syncing operations per project (during theSyncProject
action).sync_workspace
- Runs syncing operations at the workspace root (during theSyncWorkspace
action).
- Updated
download_extension
to v0.0.9. - Updated
migrate_nx_extension
to v0.0.9.- Will no longer remove Nx configs. Pass
--cleanup
to remove them.
- Will no longer remove Nx configs. Pass
- Updated
migrate_turborepo_extension
to v0.1.6.- Will no longer remove Turborepo configs. Pass
--cleanup
to remove them.
- Will no longer remove Turborepo configs. Pass
🐞 Fixes
- Fixed an issue where file hashing (
git hash-object
) would hang when there are too many files
being hashed.
⚙️ Internal
- Updated proto to v0.47.4 (from 0.45.2).
- Updated Rust to v1.85.
- Updated dependencies.
- Removed JSON schemas from the GitHub release.