Commit Graph

672 Commits

Author SHA1 Message Date
Will Slattum b5121c7b15 feat(presets): vale package versions custom manager (#45817)
* feat(presets): vale package versions custom manager

Co-Authored-By: Claude Code

* fix(presets): fix lint and type errors in valeVersions tests

Co-Authored-By: Claude Code

* fix(presets): fix vale.ini file pattern to use regex delimiter syntax

Co-Authored-By: Claude Code

* test(presets): update valeVersions examples and add non-pinned case

Co-Authored-By: Claude Code
2026-09-09 17:04:30 +00:00
renovate[bot] 9d74625d93 build(deps): update dependency prettier to v3.9.6 (main) (#45815)
* build(deps): update dependency prettier to v3.9.6

| datasource | package  | from  | to    |
| ---------- | -------- | ----- | ----- |
| npm        | prettier | 3.8.1 | 3.9.6 |

* chore: prettier fixes

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@mend.io>
2026-09-09 13:50:03 +00:00
Michael Kriese 7c03a7e4ec feat(presets/workarounds): group commander major update packages (#45801) 2026-09-09 09:31:16 +00:00
Sanjay Doppalapudi ff76622791 test(presets): validate internal presets the way they are consumed (#45712)
The internal preset validation ran `validateConfig()` with `isPreset`,
which allows selectors such as `matchManagers` at the top level of a
preset. That is how #39738 shipped `helpers:goXPackages*` with a bare
`matchManagers` and broke `inheritConfig` users: the real resolution
paths validate the resolved config without that leniency.

Resolve each preset through `extends`, as a repository or inherited
config would, and validate the result without `isPreset`. `packages:`
and `monorepo:` presets are selector-only `packageRules` fragments, so
they are resolved from within a `packageRules` entry instead.
2026-09-07 14:22:27 +00:00
Adam Setch 1bc6686671 feat(presets): remove duplicate octokit preset (#45708)
Signed-off-by: Adam Setch <adam.setch@outlook.com>
2026-09-07 06:52:02 +00:00
Adam Setch 10c5232778 feat(preset): @octokit group preset (#45643)
Signed-off-by: Adam Setch <adam.setch@outlook.com>
2026-09-04 12:36:35 +00:00
Jonah Snider 5f5e58b822 fix(presets): fix javaLTSVersions not preserving partial semver for mise Java versions (#44899)
* fix(presets): fix javaLTSVersions not preserving partial semver for mise Java versions

Signed-off-by: Jonah Snider <jonah@jonahsnider.com>

* test(presets): remove obsolete type assertion

Signed-off-by: Jonah Snider <jonah@jonahsnider.com>

* test(presets): type package rule result

Signed-off-by: Jonah Snider <jonah@jonahsnider.com>

---------

Signed-off-by: Jonah Snider <jonah@jonahsnider.com>
2026-09-04 11:15:21 +00:00
Adam Setch 3206c6ada5 feat(preset): group vite+ (#45631)
* feat(preset): vite plus

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

* feat(preset): vite plus

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

---------

Signed-off-by: Adam Setch <adam.setch@outlook.com>
2026-09-02 16:05:33 +00:00
Sebastian Poxhofer 1012b34025 feat(presets): add @oxlint/* packages to packages:linters and monorepo:oxlint (#45466)
* feat(presets): add @oxlint/* packages to packages:linters

Groups oxlint plugin packages together with oxlint itself.

* feat(presets): add @oxlint/plugins to monorepo:oxlint

* test(presets): update linters snapshots for @oxlint/**
2026-08-26 07:14:28 +00:00
Sebastian Poxhofer 69e05233e8 feat(manager/github-actions): add workflow depType for reusable workflow calls (#45443)
* feat(manager/github-actions): add `workflow` depType for reusable workflow calls

A job-level `uses:` pointing at `owner/repo/.github/workflows/<file>.yml@<ref>`
calls a reusable workflow rather than running an action, but both got the
`action` depType, so `matchDepTypes` could not tell them apart.

Give a reference whose sub-path is exactly `.github/workflows/<file>.yml|.yaml`
the new `workflow` depType. Every other sub-path, such as
`github/codeql-action/init`, stays an action.

The existing depType-keyed sites now accept both values, so nothing else
changes behaviour: the `actions.lock` file records reusable workflow calls too,
and `helpers:pinGitHubActionDigests` pinned them before this split.

* Apply suggestions from code review

Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
2026-08-25 11:52:05 +00:00
Sebastian Poxhofer 9d0e535934 feat(config): add overrideDescription option (#45400)
* feat(config): add `overrideDescription` option

Presets which extend many other presets used an `ignoreDeps: []` sentinel
to keep their own one-line summary in the onboarding PR instead of one line
per extended preset. Replace that hack with an explicit `overrideDescription`
option, which is consumed and removed while presets are resolved.

The resolved descriptions are unchanged. Repositories which set
`ignoreDeps: []` in their own config no longer lose all preset descriptions
in their onboarding PR.

* fixup! feat(config): add `overrideDescription` option

* fixup! feat(config): add `overrideDescription` option

* fixup! feat(config): add `overrideDescription` option
2026-08-24 11:22:31 +00:00
Jamie Tanna 23dd5682be test(config/validation): ensure that errors and warnings are always checked and that we don't length check (#45065)
* test(config): ensure that `errors` and `warnings` are always checked

As a follow-up to 6e411730a0, we can make
sure that we have a linter rule to make sure that this is consistently
checked.

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

* test(config/validation): ensure we don't use length checks

As it hides the actual messages, and makes it harder to know what is
being checked.

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

---------

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-08-04 14:46:53 +00:00
Jamie Tanna f89efb2233 feat(presets): add security:minimumReleaseAgePypi (#44992)
Per suggestion in #42610.
2026-08-03 10:04:56 +00:00
Jamie Tanna 8af53eb629 fix(presets): add missing updateTypes to exclusions in security:minimumReleaseAge* (#44990)
As these have been out-of-sync with what is and is not currently
supported per our documentation.

Co-authored-by: Claude Opus 4.8 <jamie.tanna+claude-code@mend.io>
2026-08-03 07:19:35 +00:00
Jamie Tanna 786c2ee5f2 fix(presets): refactor security:minimumReleaseAge* to reduce duplication (#44989)
As a means to make it easier - in the future - to add new
`security:minimumReleaseAge*` presets, we can refactor the 2  mostly
duplicated presets into dynamically generated presets.

Although this is not quite a "rule of 3" scenario, this shape does look
consistent, and so we can perform an early refactor.

Although this should be like-for-like, we can release this as a `fix` to
get early feedback on whether it changes anything.

Co-authored-by: Claude Opus 4.8 <jamie.tanna+claude-code@mend.io>
2026-08-02 12:56:35 +00:00
Tobias Bieniek fa7f6ec002 feat(presets): add security:minimumReleaseAgeCrate preset (#44659)
* feat(presets): add `security:minimumReleaseAgeCrates` preset

This adds a three-day minimum release age for the `crate` datasource and preserves the existing exception for pin updates.

The preset is based on the existing `security:minimumReleaseAgeNpm` preset, with its exceptions limited to update types relevant to crates.io.

It accounts for the initial 72-hour crates.io deletion window and gives scanners time to identify malicious releases.

* fix(presets): scope crate release age by update type

This replaces the pin-specific override with one package rule for `major`, `minor`, and `patch` crate updates. It keeps updates without release timestamps out of the cooldown.

The focused tests cover included and excluded update types.

* fix(presets): warn about unsupported crate update types

This exempts lock file maintenance, replacement, and pin updates from the crate minimum release age policy. It adds PR body notes that explain why each update requires manual age validation.

* fix(presets): use singular crate release age name

This renames `security:minimumReleaseAgeCrates` to `security:minimumReleaseAgeCrate`. It aligns the preset with the `crate` datasource name before release.

* Update lib/config/presets/internal/security.preset.ts

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

---------

Co-authored-by: Jamie Tanna <jamie.tanna@mend.io>
Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
2026-07-31 13:19:53 +00:00
renovate[bot] 196101a6bb chore(deps): update dependency oxlint-tsgolint to v0.25.0 (main) (#44424)
* chore(deps): update dependency oxlint-tsgolint to v0.25.0

| datasource | package         | from   | to     |
| ---------- | --------------- | ------ | ------ |
| npm        | oxlint-tsgolint | 0.23.0 | 0.25.0 |

* chore: fix new no-unnecessary-type-assertion findings

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Sebastian Poxhofer <sebastian.poxhofer@stedi.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-28 07:04:21 +00:00
Felipe Santos ddbbb687f9 feat: add commitTrailers option (#44651)
* feat(config): add commitTrailers option

Renovate's only way to add git trailers today is `commitBody`, but it's
broken on Gerrit: Renovate appends its own `Renovate-Branch`/`Change-Id`
block after the body, so user trailers end up in a non-final message
block and are not real trailers per git-interpret-trailers rules.

This adds a `commitTrailers: string[]` option (each entry a full
`Key: value` line), standardizes Gerrit's own trailers through the same
mechanism so user trailers and platform trailers merge into one final
block, and verifies the result at runtime with `git interpret-trailers`
(commitlint's trailer-exists rule uses the same approach). The
`:gitSignOff` preset is migrated from `commitBody` to `commitTrailers`
so sign-off works correctly on Gerrit too.

* Simplify a bit

* Simplify docs even more

* Simplify another bit

* Add comment about rawExec

* Drop runtime commit trailer verification

Bypass simple-git only to emit a proactive warn log is not worth the
extra surface area. Config validation already enforces Key: value form.

* test(git): cover string commit message with trailers

Codecov patch failed on the partial ternary branch that normalizes a
string message before appending trailers.

* test(gerrit): fix trailers test after scm rework

Align the commitTrailers merge test with the post-rework Gerrit SCM:
use fakeSha helpers and drop the removed force flag.

* Improve wording on gitSignOff docs

* Validate compiled commitTrailers as well

* Improve trailers example

* Use isString instead

* Update lib/util/git/index.ts

Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>

* Update lib/workers/repository/onboarding/branch/create.ts

Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>

* Format code

* Fix type-check

* Fix tests

---------

Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
2026-07-27 06:49:09 +00:00
Micah Nagel c33364d126 fix(presets/helpers): ensure that pinGitHubActionDigestsToSemver preset only applies to actions (#44830)
fix: ensure that pinGitHubActionDigestsToSemver preset only applies to actions

Signed-off-by: Micah Nagel <micah.nagel@defenseunicorns.com>
2026-07-24 13:58:35 +00:00
Felipe Santos 768fd6c4b1 fix(presets/workarounds): keep major-only Java Docker tags rolling (#44603)
fix(presets/workarounds): don't upgrade major-only Java Docker tags to full-precision tags
2026-07-17 12:29:08 +00:00
Maxime Brunet 00e05db4f9 feat(presets): add security:gomodIndirectSecurityUpdates preset (#43222)
Add a preset to allow users to opt-in to vulnerability-only updates for go.mod
indirect dependencies.
2026-07-11 12:07:14 +00:00
Jan-Otto Kröpke e921d2754b feat(presets/workarounds): Add grafana/grafana-enterprise to grafanaDockerImageVersioning (#44058)
* fix(presets/workarounds): Add grafana/grafana-enterprise to grafanaDockerImageVersioning

* fix lint
2026-06-17 10:31:20 +00:00
Jan-Otto Kröpke 7424be0484 feat(presets/workaround): add Grafana Docker image versioning workaround (#44015)
* feat(presets/workaround): add Grafana Docker image versioning workaround

* Update lib/config/presets/internal/workarounds.preset.ts

---------

Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
2026-06-16 09:04:12 +00:00
Jan-Otto Kröpke bb147e0414 fix(config/presets): Exclude docker.io/kindest/node from nodejs versioning (#43772)
* fix(lib): Exclude docker.io/kindest/node from nodejs versioning

* Update group.preset.ts
2026-06-08 13:33:38 +00:00
Sullivan S. f60b6930bf feat(presets): stylelint packages group (#43351)
Stylelint come with two official config packages maintained separately.

However, some major release of one of the config packages require the
latest major release of the stylelint tool and vice versa.

On that case, Renovate will propose separated update merge requests that
will never be solvable because of dependencies conflict during npm
install.

Also, as stylelint is not a mono-repo and use a completly different
releases history from its related config package, we MUST ensure
major/minor separation is deactivated to get the group process working
correctly.
2026-06-04 08:46:30 +00:00
Jamie Tanna 87b4a04a00 feat(presets): link to Octochangelog for updates to Renovate itself (#43712)
* feat(presets): link to Octochangelog for updates to Renovate itself

Related to #41809, and a recommendation I personally have for folks
updating their version of Renovate via Renovate, we can use
Octochangelog to provide a nicer breakdown of Renovate CLI release
notes, grouping them by headers i.e. "Features" and "Bug Fixes" across
all version(s) being updated.

This overrides the default link i.e.

```
https://app.renovatebot.com/package-diff?name=renovate&from=43.198.0&to=43.206.1
```

to:

```
https://octochangelog.com/compare?repo=renovatebot%2Frenovate&from=43.198.0&to=43.206.1
```

As this is a strong recommendation, we add it into `config:recommended`.

* fixup! feat(presets): link to Octochangelog for updates to Renovate itself
2026-06-01 11:13:11 +00:00
David Murdoch 37364d29e1 feat(groups): add grouping for ghcr.io docker image (#43276)
feat(pnpm): add grouping for ghcr.io docker image

* pnpm has added a docker image to it's GitHub repository starting with v11
2026-05-12 12:53:00 +00:00
Jamie Tanna b10905bc1e fix(util/exec): allow setting PNPM_WORKERS/PNPM_MAX_WORKERS in environment (#43131)
As found in #40942, we've been seeing increased memory usage by pnpm and
Yarn in recent months on Mend-hosted apps.

As a way to provide more control to test + validate fixes, as well as
provide self-serve for other environments, we can allowlist
`PNPM_WORKERS`/`PNPM_MAX_WORKERS` in both the "basic env vars" and the
allowed `global:safeEnv`.
2026-05-06 20:55:22 +00:00
RahulGautamSingh 246a5ab9c6 feat(presets): add changelogUrl link for GitLab-based digest updates (#41700)
* feat(presets): add changelogUrl link for GitLab-based digest updates

* Update lib/config/presets/internal/helpers.preset.ts

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

* Update lib/config/presets/internal/helpers.preset.ts

* prettier

---------

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-04-30 08:28:07 +00:00
Jamie Tanna 54378606d2 fix(presets): restore custom versioning (#42693)
This is a partial revert of da04b8edac.

With this change, we're now no longer correctly version pinning to
SemVer, as `versioning=semver-partial` doesn't require the minor/patch.
2026-04-17 06:25:41 +00:00
Jamie Tanna da04b8edac feat(manager/github-actions): use semver-partial as default versioning (#42685)
As per #42331, we should migrate to using `semver-partial` for GitHub
Actions' tags versions, instead of `docker`.

This mirrors actual usage of the way that the ecosystem tags Action
versions, and also has the benefit of automagically migrating users of
Actions that have enabled Immutable Tags, which now must be a full
SemVer tagged version.

As we're now specifying the `versioning: semver-partial`, we don't need
to specify it in `pinGitHubActionDigestsToSemver`.
2026-04-16 10:59:58 +00:00
Niklas Volcz 1316fd743d feat(presets): add BUN_CONFIG_MAX_HTTP_REQUESTS to safe global env (#41350)
feat(presets): add BUN_CONFIG_MAX_HTTP_REQUESTS to safe global env

Update the `safeEnv` preset to allow configuring `BUN_CONFIG_MAX_HTTP_REQUESTS=100` to limit the memory usage of Bun.

Ref: https://bun.com/docs/runtime/environment-variables#configuring-bun
2026-04-15 15:36:31 +00:00
Michael Kriese 0f9a516986 feat(presets): add changelogUrl link for Forgejo and Gitea digest updates (#41786)
* feat(presets): add changelogUrl link for Forgejo and Gitea digest updates

* fix: fix typo
2026-04-15 15:25:33 +00:00
Adam Setch 53bd79641c feat(bitbucket-pipelines): update file patterns to support shared configs (#41704)
* feat(bitbucket-pipelines):update file patterns to support shared configs

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

* feat(bitbucket-pipelines):update file patterns to support shared configs

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

* feat(bitbucket-pipelines):update file patterns to support shared configs

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

---------

Signed-off-by: Adam Setch <adam.setch@outlook.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-04-14 14:26:46 +00:00
Sergei Zharinov a67a96eab5 refactor(lint): Switch to Oxlint (#42384)
* refactor(lint): Switch to Oxlint

* Update .oxlintrc.json

* Fix CI

---------

Co-authored-by: Jamie Tanna <jamie.tanna@mend.io>
2026-04-07 14:42:23 +00:00
mikaello 83a55c2c2b fix(presets): add java-jdk to LTS workaround (#42407)
fix(java): add java-jdk to LTS workaround
2026-04-07 07:57:32 +00:00
Michael Kriese be016be17e fix(presets): allow short @tsconfig/node references (#42189)
* fix(presets): allow short `@tsconfig/node` references

* test: add test

* test: fix test
2026-03-27 09:24:40 +00:00
Sigurd Spieckermann e5d5482371 fix(preset): restore subdirectory and prefix matching for gitlabPipelineVersions preset (#42130) 2026-03-25 09:31:10 +00:00
Michael Kriese d6c85ecc6e fix: lint errors (#41808)
* fix: lint errors

* test: fix lint
2026-03-14 10:39:23 +00:00
Felipe Santos 69640fe422 test: assert data JSON files have alphabetically sorted keys (#41722)
* test: assert data JSON files have alphabetically sorted keys

* Reorder top-level keys
2026-03-09 08:19:13 +00:00
Felipe Santos bb6d793fe7 refactor: consolidate previous groups into kubernetes monorepo (#41454)
* fix(group): remove duplicated kubernetes group

* Revert "fix(group): remove duplicated kubernetes group"

This reverts commit 80bdae3c7e.

* Prefer k8s-io group instead

* Rename to just kubernetes

* Reorder
2026-03-09 07:18:11 +00:00
Michael Kriese 570c989065 fix(presets/eslint): add missing packages (#41653) 2026-03-04 13:34:50 +00:00
Felipe Santos 7ebba26236 feat: add commitHourlyLimit (#36226)
* feat: add `commitHourlyLimit`

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

* Update docs/usage/configuration-options.md

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

* Remove date optionality

* Fix lint comment

* Fix coverage

* Restore contents of commit.spec.ts

* Use ! somewhere else too

* Change optional parameter to nullish

* Refactor `!` to use proper check

* Fix set-branch-commit.spec.ts lint

* Fix test coverage

* Apply suggestions from code review

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

* Split commit-limit-reached into two

* Fix review comments

* Use toUTC() where applicable

* Simplify another test to utc()

---------

Signed-off-by: Felipe Santos <felipe.santos@ericsson.com>
Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
2026-02-19 18:00:32 +00:00
Alex Martossy d82e88c76a feat(presets): support registryUrl in tfvarsVersions preset (#41209)
support registryUrl in tfvarsVersions preset

Co-authored-by: copilot-swe-agent[bot] <198982749+copilot@users.noreply.github.com>
2026-02-16 13:37:13 +00:00
Michael Kriese b826167964 feat(presets/tsconfigNodeVersions): support jsconfig.json files (#41148) 2026-02-13 09:48:38 +00:00
Michael Vitz ad26a3a94e feat(presets/workarounds): support bellsoft/hardened-liberica-runtime-container Image (#41058)
* feat(presets/workarounds): support `bellsoft/hardened-liberica-runtime-container` within Java LTS workaround

* feat(presets/workarounds): support `bellsoft/hardened-liberica-runtime-container` versioning
2026-02-10 20:47:41 +00:00
wwuck 574e40f745 feat(preset): update :semanticPrefixFixDepsChoreOthers preset with missing poetry manager (#41049)
feat: update preset with missing poetry manager

poetry v2 support was added in #33509 which allows the poetry manager to
support project.dependencies and project.optional-dependencies depTypes
similar to the pep621 manager.

this change updates the :semanticPrefixFixDepsChoreOthers preset to
match the poetry manager alongside the pep621 manager.
2026-02-10 13:18:25 +00:00
Sergei Zharinov 9d857c1f68 refactor(lint): Organize imports with biome (#40966) 2026-02-06 13:40:01 +00:00
Sergei Zharinov c531748f09 refactor(presets): Rename to *.preset.ts and enforce sort-keys via oxlint (#40976) 2026-02-06 13:39:02 +00:00
Michael Kriese 3ed1817e2b fix!: prevent grouping of lockfile maintenance updates (#40781) 2026-01-29 14:21:42 +00:00