Update dependency moon to v2.5.4 - #270
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/moon-2.x
branch
from
July 17, 2026 21:55
1320971 to
f2895f6
Compare
renovate
Bot
force-pushed
the
renovate/moon-2.x
branch
from
July 19, 2026 19:28
f2895f6 to
5626111
Compare
renovate
Bot
force-pushed
the
renovate/moon-2.x
branch
from
July 28, 2026 06:57
5626111 to
fde24d9
Compare
renovate
Bot
force-pushed
the
renovate/moon-2.x
branch
2 times, most recently
from
August 17, 2026 12:41
32efffb to
b1399d7
Compare
renovate
Bot
force-pushed
the
renovate/moon-2.x
branch
from
August 19, 2026 19:07
b1399d7 to
08b533c
Compare
renovate
Bot
force-pushed
the
renovate/moon-2.x
branch
from
August 24, 2026 02:41
08b533c to
ad182e7
Compare
renovate
Bot
force-pushed
the
renovate/moon-2.x
branch
from
September 3, 2026 22:15
ad182e7 to
95c8e2d
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
=2.4.2→2.5.4Release Notes
moonrepo/moon (moon)
v2.5.4Compare Source
🐞 Fixes
SetupEnvironment(and other plugin driven commands) would attempt to locatethe executables of every toolchain declared in the workspace, and fail when one of them had not
been installed. For example,
moon docker setupfor a Python only project would fail on adeclared but unused Node.js toolchain. Toolchain executable paths are now only inherited for
toolchains that have actually been setup.
resulting in reduced performance. Globbing is now about 10% faster for these cases.
being returned. When the thread pool is now busy, we'll attempt to retry on the main thread.
⚙️ Internal
v2.5.3Compare Source
🧰 Toolchains
buntool to support Windows arm64 (Bun v1.3.10+) and musl based Linux(Bun v1.1.35+).
go list -deps -testreports a synthetic
pkg.testpackage for each tested package; its.testsuffix kept it frommatching the package under test, so it resolved to whatever ancestor project it nested under
(typically the module root) as a phantom development edge. It is now reduced to the real package
path and recognised as ownership.
go.sumis now reported as a project-graph input alongside the module'sgo.mod. As the lockfile pinning resolved dependency versions, a change there (a dependency added, upgraded, or
dropped) can alter what
go listresolves for relationship inference, so reporting it keeps alocally cached graph from going stale. Only reported when present, since a module with no
dependencies has no
go.sum.bun ciin CI when abun.lockexists (v1.2.20+), as Bundoes not enable frozen lockfiles in CI automatically.
bun dedupewhen thededupeOnLockfileChangesetting isenabled (v1.4+).
...dependency relations to--filter(v1.4+).🐞 Fixes
~:#tag) was silently droppedwhen the depending task was defined in an inherited
.moon/tasks/*config. Tag scopeddependencies are now preserved, since
workspace.inheritedTasksexclude/rename filters can onlymatch tasks by ID (#2687).
v2.5.2Compare Source
🚀 Updates
for background operations to complete.
outputStyletask option. Locally, we'll still stream theoutput for primary targets, ignoring that option. We will be revisiting this in v2.6.
versionConstraintin.moon/workspace.*to use a range instead of a requirement, whichallows for more flexible version constraints.
🐞 Fixes
PWDenvironment variable with a trailing slash (an artifact of virtual path conversion). Shellsthat validate
PWDon startup, like nushell, refused to run, failing the command (#2676).--forcewith--affectedwould not pass affected files to theaffectedFilestask option, as arguments or theMOON_AFFECTED_FILESenvironment variable.Forcing now only bypasses the affected selection filter (so unaffected tasks still run), while
affected files continue to be tracked and passed to the command.
its required dependencies had failed and aborted the pipeline. For example,
InstallDependenciescould still run its install command after
SetupEnvironmentfailed. The pipeline now abortsbefore the failed action is marked as completed, and queued actions no longer start once the
pipeline has been aborted or cancelled.
envvariable tonullwould also prevent that variablefrom being inherited from an env file (
envFile). Anullvalue now only ignores the variablefrom the system/shell environment, while still allowing an env file to provide a value.
--summaryformoon ciwas not being respected.range/requirement was defined for the toolchain
version.v2.5.1Compare Source
🐞 Fixes
--affectedwith--include-relations(-g) would not select a targetwhose dependency (or dependent) was the task actually affected by the changed files. Only the
requested targets were being tracked, but a target is marked through a relation when the task on
the other side of it is marked, and that task is quite often not one that was requested.
root, and not a member) would provision its own environment. Since the package manager resolves
upwards to the same root, this would clobber the workspace's environment, and could fail the
pipeline when both ran at the same time. Such projects now only setup the toolchain, so that its
binaries are available on
PATH.v2.5.0Compare Source
💥 Breaking
VirtualPathtype from the ground up. Is no longer an enum, but instead a newtypewrapper around
PathBuf.with virtual paths in general.
VirtualPathnow has access to allPathBufmethods,which was not possible before.
from_virtual_pathandto_virtual_pathextism host functions,into_real_pathand
into_virtual_pathwrapper functions, andreal_path!andvirtual_path!macros. Use theconversion utils instead (below).
🚀 Updates
for the setup environment action.
--otelglobal option (MOON_OTEL), for exporting traces and metrics.--otel-logsglobal option (MOON_OTEL_LOGS), for exporting log events as OTLP logs.--otel-service-nameglobal option (MOON_OTEL_SERVICE_NAME), for the reportedservice name.
OTEL_EXPORTER_OTLP_*environment variables.
moon setupaction to also setup the toolchain environment, if their dependencyroot is the same as the workspace root. Nested dependency roots will not be setup, as they are
expected to be setup by their parent project.
moon exec(and related pipeline commands) to display action failures in thesummary at the bottom, instead of interleaved within all actions.
cache.unstable_sharedWorktreeCachesetting to.moon/workspace.*, whichshares the CAS cache between all VCS worktrees on the same machine. Only blobs and manifests are
shared, as they are portable, while hashes, locks, and states remain worktree-specific. The
cache is stored in the base checkout's
.moon/cachedirectory, or~/.moon/cache/sharedwhenthe repository root has no checkout (bare clones). Requires the
casOutputsCacheexperiment.MOON_CACHE_CAS_MAX_SIZE,MOON_CACHE_CAS_VERIFY_INTEGRITY, andMOON_CACHE_SHARED_WORKTREE_CACHE.envsetting to.moon/tasks/**/*configs. These environment variables are inheritedby all matching projects, and are merged into each project's
envsetting, with project-levelvariables taking precedence.
workspace.mergeStrategiessetting tomoon.*config, which controls how projectsettings are merged with inherited workspace-level settings. Currently supports
envandfileGroups, using the same merge strategies as task merging (append,prepend,preserve,and
replace).matching. For example,
apps/*/package.jsonwill only find Node.js projects, andsrc/**/*.csprojwill only find .NET projects. The path without file name will be used as theproject identifier (if not defined).
.glob or target a moonconfiguration file.
operations will now be offloaded into the background via the daemon. Because of this, you'll
need to inspect the daemon server logs to understand when something fails during archiving or
hydrating, as the main process will no longer block on these operations.
more reliable.
asyncAffectedTracking,asyncGraphBuilding, andnativeFileHashingexperiments are nowenabled by default. If you run into issues, please report it, and then disable the experiment to
continue.
dependencies (
production,peer) and development scoped dependencies (development,build,root) are now tracked as separate internal graphs, so relationships that cross the boundary nolonger fail with a cycle error, or silently drop dependency edges.
RealPathtype, which is a newtype wrapper aroundPathBufthat represents a real pathon the host file system. This is a sibling to the
VirtualPathtype, which represents a virtualpath in the guest WASM environment.
convert_to_virtual_pathandconvert_to_real_pathhelper functions for convertingbetween real and virtual paths, using a list of host-to-guest path mappings.
VirtualPathExt::to_real_pathandRealPathExt::to_virtual_pathextensiontraits for the same functionality.
DefineRequirementsOutput.for_setup_environmentandfor_setup_toolchainfields, whichallow toolchains to specify requirements for the setup environment and setup toolchain actions,
respectively.
PruneDockerInput.project_dependenciesfield, which allows the toolchain to know aboutother projects that the focused project(s) depends on, so it can prune their dependencies as
well.
DefineRequirementsInput.toolchain_configto inherit the project-level settings whenapplicable.
🧰 Toolchains
forceoption forbinsentries is now respected, and will always install the binary.binsnot being reinstalled when their binaries were uninstalled or deletedoutside of moon.
project now resolves a canonical import path (nearest
go.modmodule path plus the project'srelative directory), and
go list -depsresults are matched against those by longest prefix.This makes relationships resolvable in repositories that share a single
go.modacross allprojects.
go.workno longer create project relationships,since those builds consume the published module rather than the local source. When the
gobinary is unavailable, projects with their own
go.modunder a workspacego.workfall back toresolving relationships from their direct requires.
replacedirectives keep their meaning in the new model: a require replaced by a localdirectory always links to the project at that location (it consumes local source even without a
go.work), while a require replaced by another module never links.go list -deps ./...enumerates packages belonging to projects nested inside the scannedproject, which previously inferred an edge from the parent to every nested child — forming a
cycle whenever a child declared
dependsOnon its parent.nub.lock(pnpm lockfile format), but will locate dependency roots using otherpackage manager lockfiles that nub can operate on.
pnpm-workspace.yamlwhen present, otherwise frompackage.json.bun.lockparsing failing on Git/GitHub dependencies that include both package metadata(
dependencies,bin, etc) and an integrity hash.syncVersionManagerConfigsetting (it never worked correctly)..venvdirectories for non-focusedprojects (those that were not explicitly scaffolded).
lib.rsormain.rsfiles.binsnot being reinstalled when their binaries were uninstalled or deletedoutside of moon. Only missing binaries are now installed.
🐞 Fixes
--stackand--sourceoptions ofmoon query projectsdisplayed eachother's help text. The filtering behavior itself was correct.
entirely, after building a partial graph (a subset of projects), as internal node identifiers were
not re-synced when placeholder nodes were removed.
dependency referenced a project by its alias.
as projects were inserted in completion order instead of a stable order. This could cause unstable
hashes and
--dot/--jsonoutput.runDepsInParallel: falsewould not be linked to all of itsdependencies when a serial ordering edge was skipped to avoid a cycle, allowing the task to run
before a dependency had finished.
repositories without a
.gitmodulesfile, when the git object database was incomplete orunreachable (e.g. partial clones, or
--referenceclones whose alternates are inaccessible).Submodule detection is now skipped entirely when no
.gitmodulesfile exists.experiments.asyncAffectedTrackingdisabled) would silently skip transitive dependent tasks when running with
--downstreamand--include-relations, and could even schedule fewer tasks when the change set grew, as affectedmarks were accumulated lazily in target iteration order. Affected status is now tracked up front,
mirroring the asynchronous tracker.
$workspaceRoot,$workingDir,$projectRoot)expanded using the Windows path format (
C:\path) based on the shell moon was executed from,instead of the shell the task runs in. When the
windowsShelltask option isbash, they nowexpand using the Unix path format (
/c/path) that bash expects.--downstream deepwould also expand the dependents of upstreamdependencies, running tasks that are not dependents of the requested targets (with a deep enough
graph, the entire connected component). Downstream expansion now only flows from the requested
targets through their dependent chains, matching how
--downstream directalready behaved.error. Dependent toolchain actions would run in the broken environment and fail with misleading
errors (like a missing
proto-shimbinary) that masked the root cause. Setup proto and setupenvironment failures now abort the pipeline immediately, and when multiple actions fail, the first
failure is reported instead of the last.
⚙️ Internal
TaskMergeStrategytype toMergeStrategyin@moonrepo/types, as it's no longerexclusive to tasks.
v2.4.6Compare Source
🚀 Updates
MOON_BASEandMOON_HEADto no longer require also passing--affected.🐞 Fixes
HEADwould be used for merge request pipelines.v2.4.5Compare Source
🐞 Fixes
in failed caching.
v2.4.4Compare Source
🐞 Fixes
every upload was rejected with "client should not populate stdout_raw during upload" or "action
digest not found in CAS", leaving the cache permanently empty.
without also inlining the raw bytes.
server returned a
RESOURCE_EXHAUSTEDerror, because a blob was too large. We now set the maxsize to 4MB (the gRPC limit).
unstable_remote.cache.localReadOnlysetting.v2.4.3Compare Source
🚀 Updates
information.
new syntax & file location.
If you are using the old syntax, you can use
bitbucket-legacyinstead.🐞 Fixes
runDepsInParallel: falsewould only serialize direct dependencies, allowinga dependency's own dependencies (grandchildren) to run in parallel with earlier serial
dependencies. The entire dependency subtree is now ordered.
moon cifailing in certain CI provider pull request builds, where the base branch isprovided as a fully-qualified
refs/heads/<branch>ref that couldn't be resolved in a detachedHEADcheckout.export PATH=...in the$BASH_ENVfile would overwrite thePATHthat moon injects for tasks.BASH_ENVis no longer passed tobashwrapped child processes, unless explicitly set with thetask
envoption.outputStylewas being applied to the primary target. It will onlyapply to transitive targets.
codepage output from Python) was discarded entirely, resulting in empty
stdout.log/stderr.logstate files, cache hits replaying no output, and missing output in run reports. Invalid bytes are
now replaced with
�instead.(
moon ci,--dependents,--downstream), if the task was first added to the action graph as adependency of another target. For example,
moon run app:build lib:build --dependentswould skipthe dependents of
lib:buildwhenapp:builddepends on it.0444files) failing on every cache hit with a"Permission denied" error when the
casOutputsCacheexperiment is enabled. Caches that alreadycontain read-only objects are healed automatically.
moon query changed-fileswould include uncommitted changes from the localindex (
git status) even when an explicit--headrevision was provided, causing false positiveswhen comparing 2 revisions. This also applies to affected detection with an explicit head, e.g.
the
MOON_HEADenvironment variable or--affected base:head. Additionally,MOON_BASEandMOON_HEADenvironment variables that are set but empty are now ignored..moon/hooks, even when theworkspace configuration lived in
.config/moon. Hooks are now placed alongside the config, in.config/moon/hooks.1, instead of propagatingthe task's actual exit code.
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.