As a means to improve debuggability of Azure's `platformAutomerge` and
`autoApprove`, we can provide a log line to provide more context of what
we're changing.
As a means to make the dry-run functionality a little more useful, we
can log out what commit(s) a given Renovate run would have created
outside of Dry Run.
Because the meta key `contents` is automagically replaced with
`[contents]`, we need to move this into a new field, `rawContents`.
This can also lead to longer lines being output, but provides additional
utility that we've had requests for before.
* feat(datasource): add elm-package datasource
* refactor(elm): inline test fixtures
* fix(elm): correct import ordering in test file
* fix(elm): use zod/v3 import to match codebase conventions
* refactor(elm): rename types.ts to schema.ts
Follow project convention of using schema.ts for zod schema files.
* test(elm): add test for invalid JSON response
Use v8 ignore if directive and add test covering the null result
path when the API returns invalid JSON.
* refactor(elm): remove unreachable null check
* test(elm): add test for default registry URL fallback
* refactor(elm): guard against missing registryUrl instead of fallback
* fix(elm): handle ZodError gracefully instead of throwing
* feat(elm): add package cache for elm-package datasource
As we continue to be more careful with our environment variable usage,
we should make sure it's not possible to ever have a clash.
Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
fix(gerrit): use the "ready" push option to ensure changes are not wip
In gerrit, changes can be set to WIP by default instead of ready.
This breaks renovate because it doesn't see WIP changes and just
creates new ones again every run.
The solution is to always include the "ready" push option to ensure
the changes are ready and not wip.
https://gerrit-review.googlesource.com/Documentation/user-upload.html
* feat(manager/npm): pass --before to npm install when minimumReleaseAge is set
* use logger metadata
* Apply suggestion from @viceice
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
---------
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Noticed when attempting to run Renovate against an empty repository (on
`platform=bitbucket`) we previously saw:
WARN: Host error (repository=jamie-tanna-mend-1/test-any-updates)
"hostType": "git",
"packageName": undefined,
"err": {
"task": {
"commands": [
"clone",
"-b",
"main",
"--filter=blob:none",
{
"0": "h",
"1": "t",
"2": "t",
"3": "p",
...
"281": "i",
"282": "t"
},
{"0": "."}
],
"format": "utf-8",
"parser": "[function]"
},
"message": "Cloning into '.'...\nfatal: Remote branch main not found in upstream origin\n",
"stack": "..."
We can instead match against the case where it's a `String` object, and
forcibly return the `sanitized`'d value.
Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
* fix(platform/bitbucket): replace deprecated cross-workspace repos endpoint
The GET /2.0/repositories?role=contributor endpoint is being removed by
Bitbucket Cloud on 2026-03-31 (CHANGE-2770). Replace it with per-workspace
calls to GET /2.0/repositories/{workspace}.
When autodiscoverNamespaces is set, those values are used directly as
workspace slugs. Otherwise the current user's workspaces are first
discovered via GET /2.0/user/workspaces (the non-deprecated replacement
for GET /2.0/workspaces) and repositories are then fetched per workspace.
* fix(platform/bitbucket): address review comments
- Use z.array instead of LooseArray for WorkspaceAccesses schema
- Limit workspace fetch concurrency via promises.map
- Align test workspace slugs with reviewer suggestions
* fix(platform/bitbucket): address review comments
- Use z.array instead of LooseArray for WorkspaceAccesses schema
- Limit workspace fetch concurrency via promises.map
- Align test workspace slugs with reviewer suggestions
* fix(platform/bitbucket): restore original repo names in negation test
As part of changes in #42142, I noticed that we didn't have any coverage
of how this was determined.
Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
As reported in #41994, in 49fbc8392e, we
assumed that `updateArtifacts` would only ever be called when updating
the `maven-wrapper.properties`.
As this isn't always the case, and we may be updating a `mvnw` file, we
should check what we're about to delete, before we do.
* chore(autodiscover): log options being filtered
As a way to provide more debuggability, we can log the options we're
going to be filtering with.
* Update lib/workers/global/autodiscover.ts
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
* fixup! Update lib/workers/global/autodiscover.ts
* fixup! Update lib/workers/global/autodiscover.ts
---------
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
* fix(instrumentation): always process Git Operation spans
As part of b5cd0317cf we added the ability
to report the `Git Operations Statistics` at the end of the Renovate
run, by introducing a `SpanProcessor`.
However, this didn't correctly take into account the fact that this
would only be enabled if Renovate was configured to log/export traces,
which is not the case in most deployments.
As noted in #42118, this leads to a blank log line output, which isn't
very useful.
To correct this, we nede to always process these spans, even if tracing
is not enabled.
Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
* fixup! fix(instrumentation): always process Git Operation spans
* fixup! fixup! fix(instrumentation): always process Git Operation spans
* fixup! fixup! fix(instrumentation): always process Git Operation spans
---------
Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
As noted by Michael, this was likely fixed as part of other changes he'd
made recently around logging.
Co-authored-by: Michael Kriese <1798109+viceice@users.noreply.github.com>
When a `lookupError` occurs, it's currently unclear as to why the lookup
error occurred.
It seems to be more common in the Go ecosystem where a lookup error
occurs, and Renovate autocloses PRs, only to recreate them in a
future run.
To provide more useful debugging information to users, we can add the
actual `lookupError` string itself.