Commit Graph

3413 Commits

Author SHA1 Message Date
renovate[bot] 00daaeedd7 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.86.3 (main) (#45274)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.86.3

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.86.2 | 13.86.3 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-13 19:31:46 +00:00
renovate[bot] 184f31d8fb fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.86.2 (main) (#45271)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.86.2

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.86.1 | 13.86.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-13 17:32:46 +00:00
renovate[bot] 14604aee77 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.86.1 (main) (#45255)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.86.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.86.0 | 13.86.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-13 16:09:51 +00:00
Langning Zhang baed686520 feat(config): support base branch patterns via CLI (#45257) 2026-08-13 13:56:35 +00:00
Sebastian Poxhofer 874f3e3953 feat(presets): support relative paths inside a preset repo (#45211)
* feat(presets): support relative `extends` references inside presets

Presets which are fetched from a repository can now reference sibling
presets relatively, instead of repeating their own source, repository and
tag:

- `./x` resolves against the directory of the preset file with the
  reference
- `../x` resolves against the parent directory of that file
- `/x` resolves against the root of the preset repository

The source, repository and tag of the preset which holds the reference are
inherited, so `./system/registries` inside `github>org/repo#v2.0.0`
resolves to `github>org/repo//system/registries#v2.0.0`. A reference which
resolves to the `default` preset at the repository root is emitted in the
plain repository form, so `github>org/repo#v2.0.0`, which keeps it
deduplicated against the way consumers spell the very same preset.

A reference must stay inside its repository, its final path segment must
name a preset file rather than a directory, and it can carry parameters
but neither its own `#tag` nor a `:subPreset`. Parameters may contain a
Handlebars template, including a sub-expression such as
`./group({{ lower (env.TEAM) }})`, while a templated path cannot be
resolved and is left alone. A reference must also not carry a source
prefix, so strings such as `local>./x` or `github>../x` are rejected as
invalid.

References are canonicalized lazily, while the preset which holds them is
fetched in `getPreset()`, after migration and massaging. Only presets from
a repository hosted source, so `github`, `gitlab`, `gitea`, `forgejo` and
`local`, are walked. A relative reference which has no parent preset, for
example in a repository config, an inherited config or in `globalExtends`,
is reported as a validation error for that entry.

Relative entries of a preset's `ignorePresets` are resolved in the same
way, so a preset can neutralize a preset which it references relatively,
as long as the consuming repository does not set `ignorePresets` itself.
A reference which cannot be resolved is kept raw and logged, which lets
consumers neutralize it with `ignorePresets`, and it only fails per entry.

Because relative references cannot be resolved while a config is
validated, they are stripped from a `packageRules` entry before its
presets are resolved. A rule which is then left without any selector is
reported as a warning rather than as an error, since the stripped preset
may still provide the missing selectors. Rules without relative references
keep failing hard as before.

The `renovate-config` manager reports relative and unparsable `extends`
entries with a skipReason, instead of dropping them, and ignores templated
entries which can only be resolved at runtime.

Behavior change: an `extends` string which starts with `./`, `../` or `/`,
such as `./x`, `../x` or `/x`, is now read as a relative reference. Before
it was parsed as a local repository name, which in rare cases could
accidentally resolve through the dot segment normalization of the request
URL. For the same reason a source prefixed relative looking string, such
as `local>/org/repo`, `github>./x` or `npm>./x`, is now rejected as an
invalid preset.

* fix(presets): parse scoped npm presets with explicit `npm>` prefix

`npm>@scope/name` was parsed as a local preset, because the heuristic for
local presets matched before the `npm>` prefix was stripped.

Every other use of `npm>` keeps its current behavior, so `npm>foo` still
falls back to the npm package `renovate-config-foo`, `npm>owner/repo` is
still resolved as a local preset and nested prefixes such as
`local>npm>foo` keep working.

* refactor: remove duplicated preset source

* docs: streamline new docs

* add more docs for skipReason and add requested changes

* Apply suggestions from code review

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

* test(presets): drop object literal type casts in relative preset spec

---------

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
2026-08-13 13:54:50 +00:00
Thinh Nguyen ab105e6e42 feat(gomod): add gomodTidyAll option for indirect dependency updates in Go monorepos (#37138)
* feat(gomod): add `gomodTidyAll` option for indirect dependency updates in Go monorepos

In Go monorepos it is common for one module to depend on another in the
same repo via a local `replace` directive (e.g. `replace example.com/shared
=> ../shared`). When Renovate updates the shared module, today `go mod
tidy` runs only in that module, leaving dependent `go.sum` files stale.

Add a new `gomodTidyAll` post-update option that:

- Discovers every `go.mod` in the repo and parses its local `replace`
  directives (both inline and block form).
- Builds a dependency graph with `graph-data-structure`, with edges from
  dependency → dependent, matching the existing NuGet convention.
- Runs `go mod tidy` on every transitive dependent in topological order,
  propagating any `gomodTidy1.17` / `gomodTidyE` flags to the dependent
  commands.
- Collects updated `go.mod` and `go.sum` files from each dependent
  directory into the artifact result.
- Implies `gomodTidy` so users only need to enable one option.

Supporting changes:

- Extract `getMatchingFiles` and `resolveRelativePathToRoot` into
  `lib/util/fs/util.ts` so NuGet and gomod can share them instead of
  each having its own glob/resolve helper.
- Refactor `lib/modules/manager/nuget/package-tree.ts` to use the
  shared `getMatchingFiles` helper and rename local variables for
  clarity (`deps` → `visited`, `dep` → `dependent`) per review feedback.

Docs and config:

- Register `gomodTidyAll` in `postUpdateOptions` `allowedValues`.
- Add a row for `gomodTidyAll` to the `postUpdateOptions` table in
  `docs/usage/configuration-options.md`.
- Add a "Monorepo tidying for local `replace` directives" subsection
  to `docs/usage/golang.md` describing when to use the option.

Tests and coverage:

- `lib/modules/manager/gomod/package-tree.spec.ts` — parse/graph/topo
  order, 100% line/branch/function coverage.
- `lib/modules/manager/gomod/artifacts-gomodtidyall.spec.ts` — six
  integration cases covering subshell commands, `tidyOpts` propagation,
  result collection, no-op with no dependents, error handling, and
  the disabled path.
- Full `lib/modules/manager/gomod` suite (151 tests) and NuGet
  package-tree suite (9 tests) pass; new code is fully covered.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* refactor(gomod): use named capture groups and direct fs util imports

* fix(gomod): use `go -C` for dependent module tidy commands

A subshell only works in Docker mode, where all commands are concatenated
into a single `bash -l -c`. With `binarySource=install` or `global` each
command is split with shlex and run without a shell, so `(cd dir && ...)`
is treated as the name of a binary.

* refactor(gomod): simplify parsing of local `replace` directives

A single regex now covers both the single line form and the lines inside
a `replace (...)` block. The previous block pattern stopped at the first
`)`, so a block containing a comment with a bracket was skipped, and the
single line pattern did not allow a trailing comment.

Also keeps the NuGet package tree unchanged apart from the two helpers it
now shares.

* docs(gomod): warn against combining `gomodTidyAll` with `gomodMassage`

Massaging comments out the relative `replace` directives that
`gomodTidyAll` follows, so the two options work against each other.

* refactor(fs): use `matchRegexOrGlob` in `getMatchingFiles`

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-08-13 08:35:38 +00:00
renovate[bot] f6acbb5b94 feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.86.0 (main) (#45254)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.86.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.85.1 | 13.86.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-12 23:33:28 +00:00
renovate[bot] 851d6b6cc5 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.85.1 (main) (#45246)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.85.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.85.0 | 13.85.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-12 13:03:51 +00:00
renovate[bot] e2f223e688 feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.85.0 (main) (#45240)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.85.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.84.3 | 13.85.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-12 09:03:36 +00:00
Sebastian Poxhofer e01b50c6ab refactor(linter): oxlint prefer partial typed casts for consts (#45239)
* refactor: flag all typed object literal casts in prefer-partial-in-specs

* refactor: type maven spec httpError helper against got response shape
2026-08-12 08:50:57 +00:00
renovate[bot] 8a6d27d788 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.84.3 (main) (#45233)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.84.3

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.84.2 | 13.84.3 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-11 20:44:16 +00:00
renovate[bot] bbda04606c fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.84.2 (main) (#45223)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.84.2

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.84.1 | 13.84.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-11 13:33:41 +00:00
Jamie Tanna fba1a9de30 feat(manager/github-actions): add support for Actions Lockfiles (#45199)
* refactor(manager/github-actions): make `extractPackageFile` async

As part of follow-up changes we'll need to read `.github/workflows/actions.lock`
while extracting, which requires we are an async function.

To reduce the diff, we can prefactor this change first.

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

* feat(manager/github-actions): add support for Actions Lockfiles

In June, GitHub announced a public preview for the GitHub Actions
lockfile functionality[0].

To add support for this, we can extend our support for GitHub Actions to
handle the presence of an `actions.lock` file, and if so, update it
after updating other manager files.

Although our ideal case would be to have a pure Typescript-based parsing
and updating of the `actions.lock`, due to the early nature of the
Actions Lockfile syntax, and its lack of stability, we can invoke the
`gh actions-lock` extension when updating.

After the schema has reached a v1 release, we can then migrate to
Typescript.

To make sure that the version of the `actions-lock` extension is always
version pinned, we can expose a `constraints` to control the version,
but allow Renovate to keep the pinned default updated as needed.

This doesn't imply that we have support for `lockFileMaintenance`, as we
are only updating the lockfile when there is a dependency update, not
periodically recreating the lockfile from the current ranges.

`gh actions-lock` re-reads every workflow from disk and rewrites the
whole lockfile, so it does not fit `updateArtifacts`, which is called
once per updated package file.

We can instead follow the shape the `npm` manager uses for its
lock files, and have `processBranch` invoke this once per branch, after
every updated package file has been written to disk.

We skip workflows that aren't onboarded to the lockfile, but still run
for any other package file, as a local composite action can be a
transitive dependency of a workflow which is.

`gh actions-lock` rewrites the workflows it manages back to plain refs
when it regenerates them, which strips out any inline digest pin:

```diff
-        uses: actions/setup-java@1bcf9fb12c # v5.4.0
+        uses: actions/setup-java@v5.7.0
```

This would lead to a repository with `pinDigests` set "flip flopping",
and would cause a lot of erroneous noise for repository owners.

Instead, we can make sure that:

- we don't suggest a `pinDigest` for workflows that are managed by the
  lockfile
- digest pinning is still enabled for `docker://` references
- already-committed digests are updated when they're present - we only
  avoid suggesting /new/ digests to be pinned

Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>

[0]: https://github.com/github/actions-lockfile

* coverage

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

* fixup! feat(manager/github-actions): add support for Actions Lockfiles

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

---------

Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-08-11 11:55:06 +00:00
renovate[bot] f4f7ea1d73 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.84.1 (main) (#45209)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.84.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.84.0 | 13.84.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-11 05:27:46 +00:00
user_9090 65ee1f18b4 feat: add regex support for gitIgnoredAuthors configuration (#43938)
* feat: add regex support for gitIgnoredAuthors configuration

* feat: add tests for gitIgnoredAuthors regex handling in isBranchModified

* refactor: simplify ignored authors matching in isBranchModified function

* refactor: use for-of loop for ignored author filtering

* fix(git): treat non-regex gitIgnoredAuthors as exact strings

* fix(git): remove duplicate import of matchRegexOrGlobList

* fix(git): reorder import statements for consistency

* feat(git): enhance gitIgnoredAuthors handling with regex validation and logging

* feat(git): enhance gitIgnoredAuthors support for glob patterns and improve regex handling

* fix(git): add support for escaped glob patterns in matchRegexOrGlobList

* feat(git): update gitIgnoredAuthors documentation and improve regex handling for glob patterns

* fix(git): improve escaping of brackets and backslashes in glob pattern handling

* feat(git): normalize GitHub bot email addresses in ignored authors handling

* feat(tests): add custom author with brackets to file list in index.spec.ts

* feat(git): refactor ignored author handling to support regex normalization

* feat(git): enhance ignored authors handling to support regex patterns

* chore: retrigger ci
2026-08-10 21:41:40 +00:00
renovate[bot] 197ad00289 feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.84.0 (main) (#45197)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.84.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.83.0 | 13.84.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-10 13:19:59 +00:00
renovate[bot] 63f9e20779 feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.83.0 (main) (#45195)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.83.0

| datasource | package                        | from     | to      |
| ---------- | ------------------------------ | -------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.82.11 | 13.83.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-10 12:06:59 +00:00
renovate[bot] 44e862a926 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.11 (main) (#45187)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.11

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| docker     | ghcr.io/renovatebot/base-image | 13.82.10 | 13.82.11 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-10 05:28:15 +00:00
renovate[bot] ef843fd3e1 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.10 (main) (#45175)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.10

| datasource | package                        | from    | to       |
| ---------- | ------------------------------ | ------- | -------- |
| docker     | ghcr.io/renovatebot/base-image | 13.82.9 | 13.82.10 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-09 18:26:22 +00:00
renovate[bot] 1b99a61a38 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.9 (main) (#45156)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.9

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.82.8 | 13.82.9 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-08 15:26:50 +00:00
renovate[bot] 952ec8d366 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.8 (main) (#45150)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.8

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.82.7 | 13.82.8 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-08 01:27:09 +00:00
renovate[bot] f306402533 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.7 (main) (#45149)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.7

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.82.6 | 13.82.7 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-08 00:27:28 +00:00
renovate[bot] 84ef069a60 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.6 (main) (#45147)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.6

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.82.5 | 13.82.6 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-07 23:27:28 +00:00
renovate[bot] ee9e688256 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.5 (main) (#45141)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.5

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.82.4 | 13.82.5 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-07 18:29:40 +00:00
renovate[bot] d8aa95fe64 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.4 (main) (#45131)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.4

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.82.3 | 13.82.4 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-07 13:03:00 +00:00
Jamie Tanna a28ecdc122 refactor(types): clarify ToolSettings has two levels of config (#45125)
As part of future changes, we'll add options that do not require the
Global option to take precedence and/or be used as an upper limit.

To make this clearer, we can split out the options into Global and Repo
variants.
2026-08-07 12:21:13 +00:00
renovate[bot] 4230fe3132 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.3 (main) (#45122)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.3

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.82.2 | 13.82.3 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-07 10:04:59 +00:00
renovate[bot] c4756c3de6 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.2 (main) (#45103)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.2

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.82.1 | 13.82.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-06 07:30:28 +00:00
renovate[bot] 814c4dc689 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.1 (main) (#45099)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.82.0 | 13.82.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-05 21:31:17 +00:00
renovate[bot] 6e9352c5d5 feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.0 (main) (#45084)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.82.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.81.6 | 13.82.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-05 10:30:45 +00:00
Felipe Santos 527c141b5b feat(config/validation): validate object entries in the repositories array (#43033)
* feat(config-validator): validate object entries in the `repositories` array

* Allow global configs in the repository object entry

* Simplify tests by combining them

* Allow `enabled` inside the repository entry

* Address review feedback

* Align type with #43295

* Skip validation for 'repositories' key in global config arrays

* refactor: flatten repositories array validation nesting

Address review feedback by combining the isArray and key checks
to avoid an extra nesting level.

* fix(schema): allow object entries in repositories array

Align renovate-global-schema with runtime: entries may be a string or
an object with required `repository` plus full global/repo config.

* Revert "fix(schema): allow object entries in repositories array"

This reverts commit 9aca8dcde8.

* fixups

* fix(config/validation): handle `allowedEnv` and `allowedHeaders` in `repositories`

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

---------

Co-authored-by: Jamie Tanna <jamie.tanna@mend.io>
Co-authored-by: Claude Opus 4.8 <jamie.tanna+claude-code@mend.io>
2026-08-05 07:22:40 +00:00
renovate[bot] 7ae47086de fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.6 (main) (#45078)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.6

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.81.5 | 13.81.6 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-05 04:26:59 +00:00
renovate[bot] 7da69eabad fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.5 (main) (#45077)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.5

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.81.4 | 13.81.5 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-05 03:29:54 +00:00
renovate[bot] 374fa3f315 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.4 (main) (#45076)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.4

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.81.3 | 13.81.4 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-04 20:33:23 +00:00
renovate[bot] 7e67ccd871 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.3 (main) (#45073)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.3

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.81.2 | 13.81.3 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-04 18:32:55 +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 190f8d54ae docs(config): clarify how to use repositories (#45061)
As it's not super clear from the existing docs how it can be used.

Also, the example we previously had wasn't valid Javascript.
2026-08-04 11:58:58 +00:00
renovate[bot] 699b85d17e fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.2 (main) (#45060)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.2

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.81.1 | 13.81.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-04 10:35:19 +00:00
renovate[bot] 1bfd4a6b80 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.1 (main) (#45050)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.81.0 | 13.81.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-04 02:30:43 +00:00
renovate[bot] e765c6fcde feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.0 (main) (#45049)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.81.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.80.1 | 13.81.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-03 22:29:46 +00:00
renovate[bot] 73adcf8298 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.80.1 (main) (#45045)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.80.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.80.0 | 13.80.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-03 18:23:25 +00:00
renovate[bot] b708c86d28 feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.80.0 (main) (#45044)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.80.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.79.0 | 13.80.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-03 17:29:46 +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
renovate[bot] 60259686df feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.79.0 (main) (#45011)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.79.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.78.8 | 13.79.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-01 22:41:46 +00:00
renovate[bot] 022f765192 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.78.8 (main) (#45004)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.78.8

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.78.7 | 13.78.8 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-31 21:29:42 +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] d1d254c25b fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.78.7 (main) (#44986)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.78.7

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.78.6 | 13.78.7 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-31 06:29:03 +00:00
renovate[bot] 4c7bb14852 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.78.6 (main) (#44983)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.78.6

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.78.5 | 13.78.6 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-30 23:44:56 +00:00