Commit Graph

2547 Commits

Author SHA1 Message Date
Johannes Feichtner b05b21802d feat(vulnerabilities): support golang-version toolchain directive for OSV vulnerability alerts (#43333) 2026-05-14 06:05:17 +00:00
Sebastian Poxhofer 03baf6ee4a test(noNewURL): add new rule enforcing parseUrl() from 'lib/util/url.ts' (#43247)
* test(noNewURL): add new rule enforcing parseUrl() from 'lib/util/url.ts'

* replace newURL with parseUrl

* remove non-null assertions marks if appropiate

* test: add additional tests

* test: add additional tests and ignore where it makes sense

* implement suggestions

* test: further improve coverage

* apply suggestion
2026-05-13 16:23:10 +00:00
Jameel Al-Aziz 1e7dd2043c fix(github): set commit message explicitly for platform automerge (#42056)
* fix(github): set commit message explicitly for platform automerge

When GitHub's "Use PR title and body as commit message" setting is
enabled, the verbose Renovate PR description gets used as the squash
commit body. Pass `commitHeadline` and `commitBody` to the
`enablePullRequestAutoMerge` GraphQL mutation so the actual commit
message is used instead.

* add REBASE test

* pr feedback
2026-05-13 15:37:52 +00:00
Jamie Tanna fd537a28be chore(workers/repository): improve error for invalid allowedVersions (#43312)
As noted in #43304, when using `osvVulnerabilityAlerts`, we can
sometimes produce an `allowedVersions` that is valid for the ecosystem,
but without setting the `versioning`, we produce an invalid rule, which
then results in a `config-validation` result, breaking any updates on
the repo.

When this happens, it's unclear which `versioning` is used to validate
this, so we should add this to the error message.
2026-05-13 13:41:54 +00:00
Jamie Tanna 83a415072d fix(vulnerability): set datasource if overriding allowedVersions (#43308)
As noted in #43304, when using `osvVulnerabilityAlerts`, we can
sometimes produce an `allowedVersions` that is valid for the ecosystem,
but without setting the `versioning`, we produce an invalid rule, which
then results in a `config-validation` result, breaking any updates on
the repo.

We should therefore wire in the default `versioning` for the given
datasource.
2026-05-13 13:41:16 +00:00
Jamie Tanna 032a5cb289 feat(presets): log the resolved configuration (without internal presets) (#39314)
As noted in #15827, it would be useful to log the "shallow"
configuration for a given repository - that is, the resolved
configuration, but without any Renovate internal presets being included.

This will be very useful for debugging, as it shows the final resulting
configuration, but without the - often very - verbose internal presets.

In the case that only this log line is shared, we can make sure to
reference the version of the Renovate CLI in the log line.

This requires building on top of changes in
6a4fa3f245 to be able to return a `merged`
and `unmerged` list of presets, and uses helpers from
c8f42e86b4, and
66b84dd12b to process the internal presets
accordingly.

Since we first worked on this, we've worked on improvements to caching
which should provide a require no additional performance overhead
performing this resolution twice.

This can also lead to being able to understand more clearly how Renovate
configuration is being used[0], as we have the final resolved configuration.

We want to make sure we don't try and merge or visit any internal
presets if we're not going to merge them, so we can avoid verbose
`config` or `visitedPresets` results.

[0]: https://www.jvt.me/posts/2024/04/14/renovate-config-sql/
2026-05-11 10:46:55 +00:00
RahulGautamSingh ff037fa7c2 fix(prune): use configured base branch when single non-default baseBranchPatterns is set (#43152) 2026-05-07 17:09:10 +00:00
Johannes Feichtner 77758459e9 feat(manager/npm): pass --before to npm install when minimumReleaseAge is set (#42552)
* feat(manager/npm): pass --before to npm install when minimumReleaseAge is set

* fix tests

* replace regex with `ini` parse
2026-05-07 13:14:48 +00:00
Felipe Santos 61abbd7469 feat: drop redundant (major|minor|patch) PR suffixes (#41705)
* feat: remove `(major)` suffix from PR title when there's a version already

* Use isNonEmptyStringAndNotWhitespace

* Ensure commitMessageExtra is actually a version
2026-05-06 16:00:23 +00:00
Elliot Courant 8776389291 feat(vulnerability): Add vulnerability alerts to deps-edn + lein (#42945)
* feat(vulnerability): Add vulnerability alerts to deps-end + lein

deps-edn and lein both essentially use maven upstream for several
packages. Some packages come from clojars directly but others are
typical java packages. If there is an OSV alert for a maven package
however, it will not propagate to the deps-edn or lein dependency update
from renovate. This tries to adjust that so that clojure can derive
dependency alerts from maven as well so that those dependencies are
treated the same way.

* chore: Code review feedback

* chore: Make ecosystem to datasource one to many

Technically datasource to ecosystem was already many to one in a way, as
maven appeared in the values twice. Once for clojure and once for maven
itself. This changes it so that the ecosystem to datasource is the same
way and looking up by ecosystem you will get multiple datasources
(should match the map above the modified code).

Then to make this work, instead of keying off of datasource for
vulnerabilities we key off of ecosystem so that all of the datasources
that are part of that ecosystem inherit the vulnerabilities for the same
dependency.

* chore: Tweaking to try to force CI/CD retry
2026-05-04 08:08:17 +00:00
Jamie Tanna e37388d91f feat: allow separate versioning for constraints (#42966)
* feat: allow separate versioning for constraints

As noted in #31831, there are times where it can be useful to override
the version that a given datasource uses, when performing
`constraintsFiltering=strict.`

This should only be applicable to the "additional" constraints, so we
make sure to validate this.

As this is new functionality, any misconfiguration should be marked as
an error.

We can make sure to provide a real-world usecase for this (taking
inspiration from `rails`' versioning of the `rubygems` constraint).

This will be used in the future by the extraction of the `go` directive,
which requires a different versioning to the default `semver`.

* fixup! feat: allow separate versioning for constraints

* fixup! feat: allow separate versioning for constraints

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>

* extra-log-context

---------

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-04-29 13:00:15 +00:00
Felipe Santos 1bbe82400e fix(gerrit): defer change creation to createPr() (#39250)
* fix(gerrit): defer change creation to `createPr()`

Signed-off-by: Felipe Santos <felipe.santos@ericsson.com>

* Refactor hashtags handling

* Add prTitle to all missing commitAndPush()

* Fix gerrit tests

* Add warning when prTitle is set in updatePr

* Remove now useless labels from commitAndPush

* Fix gerrit client coverage

* Fix gerrit scm coverage

* Fix rebase coverage

* Improve TODO about assignees

* Fix formatting

* Fix review comment

* Extract to a pushForReview function

* Fix after #41382

* Fix onboarding

* Cleanup code

* Fix ESLint

* Fix tests

* Restore gitRetry for git.merge

* Fix tests

* Simplify hashtags code

* Delete pendingChangeBranch in pushForReview()

* Fix test name

* Remove unnecessary test comments

* Improve test name again

* Fix another test name

* Delete local branch in Gerrit SCM

* Add test for deleting pending branch

* Add tests for pushForReview()

* Fix test case name

* Improve another test name

* Fix another small test inconsistency

* Fix some code style issues

* Use isUndefined instead

* Fix one small test style issue

---------

Signed-off-by: Felipe Santos <felipe.santos@ericsson.com>
2026-04-28 08:29:26 +00:00
Mike Ryan 525f80d6df fix(package-rules): respect each dep update's fetchChangeLogs value (#42671)
* fix(package-rules): respect each dep update's fetchChangeLogs value

Ensures that changelog fetching respects each dep update's specific `fetchChangeLogs` value.

Given the following renovate configuration: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/blob/fb9e070d0f9a4d6fc742c4a22edee2c9b055fece/.github/renovate.json5#L42-L61

My expectation is that Renovate would never fetch changelogs for `lodash`. However, when grouped
together with `chalk` and `tar` under `group of unrelated packages`, we find that
renovate fetches changelogs all packages, including `lodash`.

Before this change (`lodash` logs fetched):
- Run: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/actions/runs/24480887343/job/71544876893
- (wrong) lodash, tar, and chalk all have changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/9

After this change, the PR created by renovate only contains changelogs for `chalk` and `tar`, but not `lodash`:

- Run: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/actions/runs/24481738609/job/71547632550
- (expected) lodash does not have changelogs, but tar and chalk have changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/10

----

We can further explore the effectiveness of the change with a more elaborate configuration, where the top-level has `fetchChangeLogs: off`: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/blob/0ea69c18b9171e38c56440c762faa68109d3d0d5/.github/renovate.json5#L41-L95

Before the change:

- Run: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/actions/runs/24482213234/job/71549162174
- (wrong) lodash, tar, and chalk all have changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/15
- (expected) typescript (inherited `off`) does not have changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/17
- (expected) grunt (overridden `pr`) has changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/13

After the change::

- Run: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/actions/runs/24482561172/job/71550255278
- (expected) lodash does not have changelogs, but tar and chalk have changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/22
- (expected) typescript (inherited `off`) does not have changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/24
- (expected) grunt (overridden `pr`) has changelogs: https://github.com/justfalter/renovate-test-packagerules-fetchchangelogs/pull/20

Portions of this PR previously appeared in #42368

* pre feedback: just use fetchChangeLogs from upgrade

* revert documentation.spec.ts changes

They've already been integrated with #42846
2026-04-27 15:28:15 +00:00
Felipe Santos 3afa38511b refactor(datasource/npm): extract defaultRegistryUrl constant (#42794)
* feat(datasource/npm): extract defaultRegistryUrl constant

* Fix some other places

* Remove useless defaultRegistryUrls export

* Fix another place

* Undo rules.spec.ts changes, which are not related

* Fix npm presets

* Restore line removed by mistake

* Fix another test file

* Restore changes to a file which is not relevant

* Fix another small place
2026-04-27 15:24:01 +00:00
Sebastian Poxhofer d6834c5560 docs(shell-executor): move code comment to docs (#42898) 2026-04-26 07:25:05 +00:00
Jamie Tanna 300035a700 chore(workers/repository): provide more detail when rolling back (#42818)
* chore(workers/repository): provide more detail when rolling back

To help debug the case where rollbacks are being initiated, we can:

- add slightly more information to the `Filtered out ...` log line
- add `prBodyNotes` to the resulting PR

This requires we expose the `prBodyNotes` field to `LookupUpdate`, and
the `packageName` and `datasource` to `RollbackConfig`, so we can log
them.

* chore(modules/datasource): log `datasource` and `packageName` when filtering

For more context when reviewing the logs.
2026-04-24 16:23:45 +00:00
RahulGautamSingh b875eef9d0 fix(changelog): skip link reference definitions in body matcher (#42868)
* fix(changelog): skip link reference definitions in body matcher

* remove extra comment
2026-04-24 09:30:52 +00:00
Jamie Tanna 72968d3726 chore: clarify "Mend Renovate" in PRs (#42841)
As part of general work to reinforce the brand link between Mend and
Renovate, we can improve the default PR body footer to clarify this.

This feeds into #29885 and general naming, where we want to keep these
close, while also not being too "in your face".

This is still user-controlled, but provides a more reasonable default.

This also feeds into #26838 and #39305, where we should also remove the
"Bot" from the footer.
2026-04-23 11:33:36 +00:00
Jamie Tanna 0c21df1e22 perf(workers/repository): use a Set for allReleaseVersions (#42779)
So all lookups downstream can be performed in `O(1)` time.

Suggested by Claude Sonnet.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-04-21 08:55:41 +00:00
Felipe Santos b24b88bfd8 fix(config): resolve repository entry presets in correct order (#41477)
* fix(config): resolve repository entry presets in correct order

* refactor: extract `applyHostRules` and `applyNpmrc` to functions

* Reuse applyHostRules in inherited.ts

* Fix test failure

* Improve resolvedRepoEntry log

* Coerce everything

* Fix another test coverage issue
2026-04-20 21:50:32 +00:00
Johannes Feichtner 08031afc95 fix(vulnerability): use datasource default versioning instead of hardcoded map (#42743)
refactor(vulnerability): use datasource default versioning instead of hardcoded map
2026-04-20 16:11:06 +00:00
Jamie Tanna a11f338de6 fix(workers/repository): correctly pass all version numbers to versioning (#42767)
This results in some incorrect behaviour, where we'll have an incorrect
measure of all releases, as this was previously only for a given bucket
of updates.

Additionally, we can make sure this is only mapped once by moving it
above other loops.
2026-04-20 15:45:13 +00:00
Johannes Feichtner be2eacd8d2 feat(vulnerability): improve GitHub advisory PR body notes with summary, GHSA ID and references (#42670)
feat(vulnerability): improve GitHub advisory PR body notes with summary and GHSA ID
2026-04-17 15:33:56 +00:00
Jamie Tanna 171d17734a chore(versioning): allow providing known versions to module (#42719)
As part of future changes, we'll introduce a new Versioning module for
GitHub Actions, which requires knowing if the version it's proposing
actually exists.

This is a more useful concept for Versioning modules to be able to take
advantage of, so we can expose this as an optional capability that
Versioning modules can use.
2026-04-17 15:00:06 +00:00
RahulGautamSingh 7b4f75bae1 fix(gitlab): loosen re-approve constraints during updatePr (#42528)
* fix(gitlab): loosen re-approve constraints during updatePr

* refactor
2026-04-15 09:57:51 +00:00
Johannes Feichtner 593a2b16c0 fix(vulnerability): remove matchFileNames restriction from GitHub vulnerability alerts (#42636) 2026-04-15 07:08:34 +00:00
Johannes Feichtner 1e906e8e33 feat(vulnerability): add severity and CVSS details to GitHub Dependabot alerts (#42568) 2026-04-14 18:05:08 +00:00
Mike Ryan f635ae29c4 chore(instrumentation): add timing statistics for getReleases (#42523)
* feat: timing statistics for getReleases

Adds collection and reporting of timing statistics for
`datasource.getReleases()` calls. Each call records the datasource, registryUrl,
packageName, and duration. The intent is to visibility into where
renovate is retrieving release information and how long that might take.

The report consists of a nested data-structure that provides increasing
detail as we descend datasource, registryUrl, and packageName.

The full report  is logged at trace level
`getReleases statistics with packages`.

A summary report including only datasources and registryUrls is logged
at debug level `getReleases statistics summary`.

* add GetReleasesSpanProcessor

- Re-instrument getReleases calls using open telemetry.
- Adds GetReleasesSpanProcessor, which can adapt
  `getReleases` spans to GetReleasesStats.

* fixup instrumentation tests

* pr feedback

* pr feedback: naming

* pr feedback: comments
2026-04-14 17:36:37 +00:00
Jamie Tanna 01f2479eab feat(osv): mark malicious packages with skipReasons (#42510)
* fix(workers/repository): don't include `skipReason`'d dependencies in flattened updates

When we're preparing the final, flattened, list of branches to prepare
updates for, we're not filtering out any dependencies that have a
`skipReason` in them.

In the case that, as part of future changes like #42510, a `skipReason`
may be added after the `lookup` phase, we can still get PRs raised even
when they shouldn't be.

We already filter out `enabled=false`, so we should make sure to also
filter anything with a `skipReason`.

* feat(osv): mark malicious packages with `skipReason`s

As part of current ongoing supply chain attacks, there have been cases
where Renovate updates packages to a malicious version.

We'll be introducing a more in-depth means to surface these, including
from different API sources, as part of the Enrichment functionality,
but in the short-term we can utilise osv.dev's ingestion of OpenSSF's
Malicious Packages data.

To do this, we need to:

- look for any `MAL-` advisories
- match it against the current dependency's version, and if affected, mark it
  as `skipReason: malicious-version-in-use` (which will be unset in
  the `lookup()` function, so we still perform updates
- match it against the dependency's available updates, and if any are
  affected, mark the dependency
  as `skipReason: malicious-update-proposed`

* fixup! feat(osv): mark malicious packages with `skipReason`s

* fixup! feat(osv): mark malicious packages with `skipReason`s

* test(workers/repository): add missing coverage

Co-authored-by: Claude Opus 4.6 <jamie.tanna+claude-code@mend.io>

* chore: simplify type

* wip-opus

* Revert "wip-opus"

This reverts commit e7b5f297c9.

* simplify

* sq

* sq

* fixup

Co-authored-by: Claude Opus 4.6 <jamie.tanna+claude-code@mend.io>

---------

Co-authored-by: Claude Opus 4.6 <jamie.tanna+claude-code@mend.io>
2026-04-14 13:11:04 +00:00
RahulGautamSingh 36f9d4a185 refactor: move requireConfig to InheritConfig (#41385)
* refactor: move requireConfig to InheritConfig

* fix test

* update test

* refactor
2026-04-14 11:53:53 +00:00
Thomas Rouaux 0389869bfa feat(packageRules): bumpVersions.type sync (#42540)
* bumpVersions type match

* docs + code coverage

* match to sync

* nit

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>

* nit description

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>

---------

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
2026-04-14 09:29:08 +00:00
Jamie Tanna 1044a80642 chore(types): add a strong type for ToolName and ConstraintName (#42589)
* chore(types): add a strong type for `ToolName`s

Until #41849, we can use our local definitions of the tool names that
Containerbase supports by extracting out a `ToolName` type.

* fixup! chore(types): add a strong type for `ToolName`s

Co-authored-by: Claude Opus 4.6 <jamie.tanna+claude-code@mend.io>
Co-authored-by: gpt-4.1 <jamie.tanna+github-copilot@mend.io>

* fixup! fixup! chore(types): add a strong type for `ToolName`s

* no-never

* simplify

* coverage

* sq

* warn

* sq

* fixup! sq

* sq

* fixup! sq

---------

Co-authored-by: Claude Opus 4.6 <jamie.tanna+claude-code@mend.io>
Co-authored-by: gpt-4.1 <jamie.tanna+github-copilot@mend.io>
2026-04-14 08:55:42 +00:00
Jamie Tanna f8b4477335 fix(workers/repository): don't include skipReason'd dependencies in flattened updates (#42595)
When we're preparing the final, flattened, list of branches to prepare
updates for, we're not filtering out any dependencies that have a
`skipReason` in them.

In the case that, as part of future changes like #42510, a `skipReason`
may be added after the `lookup` phase, we can still get PRs raised even
when they shouldn't be.

We already filter out `enabled=false`, so we should make sure to also
filter anything with a `skipReason`.
2026-04-13 17:15:48 +00:00
Adam Setch 27f0797396 refactor(dashboard): align terminology with other sections (#42354)
* refactor(dependency-dashboard): align terminology with other sections.

Signed-off-by: Adam Setch <adam.setch@outlook.com>

* Apply suggestion from @RahulGautamSingh

Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>

* test: update expectations

Signed-off-by: Adam Setch <adam.setch@outlook.com>

---------

Signed-off-by: Adam Setch <adam.setch@outlook.com>
Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>
2026-04-13 14:50:45 +00:00
Jamie Tanna a945d8bc5a chore(workers/repository): split malicious dependency checks (#42508)
* chore(workers/repository): report malicious packages before `packageFiles with updates`

As part of future changes, we may modify the `skipReason`s before the
update phase, which means that we should ensure these are correct before
logging out `packageFiles with updates`.

* chore(workers/repository): split malicious dependency checks

We will likely run into two specific cases of malicious dependencies -
you're currently using one, or you're receiving an update to one.

We should make these separate, explicit, cases so users are aware what
`malicious` actually means, and what the path forward is.
2026-04-09 19:06:50 +00:00
Jamie Tanna 1caa918bb9 chore(workers/repository): log warning on skipReason: malicious (#42504)
As part of future changes, we'll be introducing `skipReason: malicious`
against dependencies that have been found to be actively malicious.

Once we've looked up all our dependencies, we should then - centrally -
log any malicious package usages as a WARN, to highlight this to users.
2026-04-09 11:29:28 +00:00
Johannes Feichtner 3a05ade06b refactor(github/vulnerability): use Zod-inferred types as single source of truth (#42494)
* refactor(github/vulnerability): use Zod-inferred types as single source of truth

* revert to false, since undefined means something else on GHES
2026-04-09 08:36:40 +00:00
Jamie Tanna 5e5af62224 refactor(vulnerability): extract ecosystem<->datasource translation (#42435)
As part of the addition of the new Enrichment modules, we should perform
a prefactor that'll introduce a shared helper for the how we translate
an "Ecosystem" according to OSV with a datasource that Renovate
understands.

Co-authored-by: Claude Opus 4.6 <jamie.tanna+claude-code@mend.io>
2026-04-08 14:41:28 +00:00
Jamie Tanna 7b00f3a2a8 refactor(types): use BranchStatusConfig for setting status checks (#42463)
As we have a strong type for this, we should use it.

Co-authored-by: gpt-4.1 <jamie.tanna+github-copilot@mend.io>
2026-04-08 13:23:16 +00:00
Jamie Tanna 76ae34045a refactor(vulnerability): extract shared functionality into util functions (#42433)
As part of the addition of the new Enrichment modules, we should perform
a prefactor that'll introduce helper methods that can be used across
both GitHub and OSV Vulnerability Alerts.

Because each module uses a slightly different input (Datasource ID or an
"Ecosystem" according to OSV) we need to handle both types of inputs.

Co-authored-by: Claude Opus 4.6 <jamie.tanna+claude-code@mend.io>
2026-04-08 07:25:37 +00:00
Sergei Zharinov 7df11ed734 chore(lint): add enforce-ts-extension oxlint rule (#42389)
* refactor(lint): extract custom oxlint rules into separate files

Split `tools/lint/rules.js` into one file per rule under
`tools/lint/rules/`. Also simplify `test-root-describe` with
early-exit guard clauses.

* feat(lint): add `enforce-ts-extension` oxlint rule

Add a custom JS-based oxlint rule that enforces `.ts` extensions on
local imports. The rule catches two problems:

- `.js` extension used instead of `.ts` (auto-fixable)
- missing file extension entirely (report only)

Checked locations:
- static import/export declarations
- dynamic `import()` expressions
- vitest module APIs: `vi.mock`, `vi.doMock`, `vi.unmock`,
  `vi.doUnmock`, `vi.importActual`, `vi.importMock`

Both relative paths (`./`, `../`) and path aliases (`~test/`)
are treated as local. Package imports are ignored.

Also fixes 26 pre-existing violations across 18 spec files.

* Update tools/lint/rules/enforce-ts-extension.js

Co-authored-by: Anne Stellingwerf <1637358+astellingwerf@users.noreply.github.com>

---------

Co-authored-by: Anne Stellingwerf <1637358+astellingwerf@users.noreply.github.com>
2026-04-07 15:36:16 +00:00
Jamie Tanna 5f02aa860d chore(onboarding): add "reading list" link from onboarding PR (#42418)
As a potentially actionable suggestion for newly onboarding users.
2026-04-07 10:57:01 +00:00
Jamie Tanna 434606bfb4 feat(onboarding): make Add your custom config to ... more prominent (#42332)
* feat(onboarding): make `Add your custom config to ...` more prominent

As part of work to improve the Onboarding flow as part of larger repos,
we noticed that the `Add your custom config to ...` comment may be
missed.

We can make this more prominent by moving it up to the top of the PR.

* fixup! feat(onboarding): make `Add your custom config to ...` more prominent
2026-04-07 10:29:52 +00:00
Michael Kriese e8d13714aa fix(replacements): don't use current releases for new digest when new name differs (#42333)
* fix(replacements): don't use current releases for new digest when new name differs

* chore: fix types
2026-04-02 11:58:01 +00:00
Jamie Tanna ac30b35f0c feat(pr): break Schedule definition over multiple lines + show cron syntax in code blocks (#42329)
* test(pr): add test coverage for `automergeSchedule`

* test(pr): validate full `Schedule` text

As part of a future change, we'll be modifying this, so we should
clarify the exact behaviour.

* feat(pr): break `Schedule` definition over multiple lines

To provide a more readable set of `schedule` and `automergeSchedule`
configuration options, we can break these over multiple lines, which
makes it clearer where there are multiple schedules that may apply at
a given time, as well as making it clearer between branch creation vs
automerge, which isn't necessarily clear.

* feat(pr): show cron syntax in code blocks

As it can make it clearer, as well as avoiding potential interpretation
as Markdown.

* fix(pr): ensure enough whitespace between elements

Although it's unlikely to hit our currently used Platforms, it's worth
making sure we do it right.
2026-04-02 11:56:10 +00:00
Jamie Tanna 0b74302d3a fix: correctly warn when an attestation is missing (#42311)
* test: add additional case for attestation changes

* fix: correctly warn when an attestation is missing

As noted in #37258, when a package registry had previously seen an
attestation for authenticity of a given package release, Renovate should
warn if future updates then lose authenticity.

Our previous attempt at this didn't quite pass around the current
package's attestation, which results in no warnings.

Given recent supply chain attacks where an attestation was removed (such
as Axios in MSC-2026-3522), we should make sure that this logic does
work correctly, and flags to our users.

In the future, we'll add more checks and a failing status check.

By introducing `hasAttestation` in the `LookupUpdate`, this can now be
matched on with `matchJsonata`, as well as providing visibility in the
`packageFiles with updates` log line.

* fixup! fix: correctly warn when an attestation is missing

> Run `pnpm run jest
> lib/workers/repository/process/lookup/index.spec.ts` and handle any test
> failures - the implementation is correct, so update the tests

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>

* test: clarify that we don't check for intermediate releases

Which we'll look to improve as part of future changes.

* chore: fix typo

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>

---------

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-04-01 15:00:08 +00:00
Felipe Santos e7f55d7e42 refactor: extract applyHostRules and applyNpmrc to functions (#41528)
* refactor: extract `applyHostRules` and `applyNpmrc` to functions

* Reuse applyHostRules in inherited.ts

* Restore original log message for npmrc

* Simplify applyNpmrc log context handling

* Remove redundant config word

* Apply Jamie's suggestion

* Restore log messages again

* Revert "Restore log messages again"

This reverts commit 7a67c5d3a4.

* chore: re-add log line

---------

Co-authored-by: Jamie Tanna <jamie.tanna@mend.io>
2026-03-31 18:03:44 +00:00
Michael Kriese 3953a78123 refactor: pass packageFile to updateDependency (#42253) 2026-03-30 17:32:36 +00:00
Jamie Tanna 3951723d13 feat(dry-run): log commit contents (#41718)
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.
2026-03-30 16:15:36 +00:00
Sam Chung f33f3f6d7c fix: use correct digest when replacing packages with replacementNameTemplate (#40058)
* fix: use correct digest when replacing packages with replacementNameTemplate

* chore: avoid CodeQL flagging false positives

* Apply suggestions from code review

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>

---------

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2026-03-27 09:16:02 +00:00