Commit Graph

27161 Commits

Author SHA1 Message Date
Jamie Tanna 2382888bc7 fix(workers/repository): validate resolved presets
As a further level of defence-in-depth for fixes on top of `allowedEnv`
and `allowedHeaders` enforcement, we can also make sure that we're
performing full config validation for the resolved configuration.

This allows us to report any configuration errors/warnings when we
include the full resolved configuration, without necessarily blocking
the full Renovate run, unless using `configValidationError`.

Co-authored-by: Claude Opus 4.8 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 08:01:41 +01:00
Jamie Tanna cf491cc1cd test(workers/repository): don't mock more than we need to
This change was broken out of another commit, but it is unclear which AI
model was used to make the change, so we need to note both.

Co-authored-by: Claude Opus 4.8 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 08:01:41 +01:00
Jamie Tanna ae34610468 fix(config): report top-level "security" violations for hostRules[].headers
As they shouldn't be allowed, and we should therefore - loudly - block
them.

This migrates them to being a "security" error, given it's a config
option that is blocked for security reasons.

Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 08:01:41 +01:00
Jamie Tanna 61cbc87676 fix(config): report top-level "security" violations for env
As they shouldn't be allowed, and we should therefore - loudly - block
them.

This migrates them to being a "security" error, given it's a config
option that is blocked for security reasons.

Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 08:01:41 +01:00
Jamie Tanna c1a00f1968 test(config): add a reminder to add check for trust boundaries
As a means to catch options setting `requiresCheckAtTrustBoundary`, we can add a test that is more of a reminder
than an enforcement.

Co-authored-by: Claude Opus 4.8 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 08:01:41 +01:00
Jamie Tanna 223e6efd4e fix(config): enforce allowedHeaders when applying headers
As an additional defence-in-depth, we can make sure that when applying
the `headers` configuration (from repo config, or presets) we
re-validate it.

We allow any admin-supplied configuration regardless, and then any
user-supplied settings are re-filtered according to `allowedHeaders`.

Due to the existing way that header merging incorrectly merges the repo
(or preset) `headers` over the admin config, we don't currently handle
this explicitly, unlike `filterAllowedEnv`.

If a user-supplied setting is filtered, we log a WARN message to inform
the user - and the admin - that this is ignored.

At this point, we don't try and explain which preset(s) this may have
come from, only that there is an issue.

Co-authored-by: Claude Opus 4.8 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 08:01:41 +01:00
Jamie Tanna 6b2b607080 fix(config): enforce allowedEnv when applying env vars
As an additional defence-in-depth, we can make sure that when applying
the `env` configuration (from repo config, or presets) we re-validate
it.

We allow any admin-supplied configuration regardless, and then any
user-supplied settings are re-filtered according to `allowedEnv`.

If a user-supplied setting is filtered, we log a WARN message to inform
the user - and the admin - that this is ignored.

At this point, we don't try and explain which preset(s) this may have
come from, only that there is an issue.

Co-authored-by: Claude Opus 4.8 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 08:01:41 +01:00
Jamie Tanna f189d934b3 test(workers/repository): set explicit allowedEnv
As it'll be required in a future change.

Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 08:01:41 +01:00
Jamie Tanna 9a91b69f3c test(util/host-rules): cover existing header merging behaviour
As noticed while working on this branch, we currently do not merge an
admin's `hostRules` settings, if a user has (in repo or preset config)
specified `hostRules` themselves, when targeting the same `matchHost`.

To cover the existing (broken) functionality, we can document this with
a test.

Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 08:01:41 +01:00
Jamie Tanna d088346f7b test(config): cover existing allowedHeaders behaviour
As part of follow-up changes, we'll be better enforcing the
`allowedHeaders` validation.

Before we do this, we should make sure that we have relevant test cases
to cover the existing (broken) behaviour.

We should cover this across both Config Validation and how config is merged.

Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 08:01:41 +01:00
Jamie Tanna 6e0bbee44d test(config): cover existing allowedEnv behaviour
As part of follow-up changes, we'll be better enforcing the `allowedEnv`
validation.

Before we do this, we should make sure that we have relevant test cases
to cover the existing (broken) behaviour.

We should cover this across both Config Validation and how config is merged.

Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 08:01:41 +01:00
Jamie Tanna 711d46b19b refactor(config): add requiresCheckAtTrustBoundary option flag
As part of follow-up changes, we'll introduce stricter validation for
config options that need to be re-validated before use.

We can prefactor by adding a new field to the config options, and making
sure it doesn't appear in the generated docs.

Co-authored-by: Claude Opus 4.8 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Claude Opus 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 08:01:41 +01:00
Jamie Tanna dac1985b96 fix(datasource/go): don't cache null on non-404/410 goproxy errors (#45638)
We've previously been incorrectly caching the error responses from the
Go proxy occurs, which leads to a lot of "flapping" of PRs on
Mend-hosted apps, and can be rather frustrating as a user (and a service
owner).

Per the Go proxy protocol[0], a `,` fallback strategy should only
continue to the next entry on 404/410, and otherwise propagate the
error.

However, we currently break out of the loop and return `result` (which
may be `null` if no successful requests have been performed yet).

This `null` would be cached, leading to a "no releases found"
(`no-result`), stored in the "hard TTL" cache, which could lead to many
days without an update for given packages.

To fix this, we can make sure that we propagate errors, which would
mean that on an error:

- if we've previously successfully retrieved the package, serve the
  "last good" result
- if we haven't, it's a full error, and the datasource can retry

[0]: https://go.dev/ref/mod#goproxy-protocol

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
44.60.0
2026-09-03 06:26:58 +00:00
Jamie Tanna 3bc84198b4 test(datasource/go): cover Go Proxy error fallback behaviour (#45637)
As part of follow-up changes, we'll fix a bug with how the caching of
error responses from the Go proxy occurs, which leads to a lot of
"flapping" of PRs on Mend-hosted apps, and can be rather frustrating as
a user (and a service owner).

Per the Go proxy protocol[0], a `,` fallback strategy should only
continue to the next entry on 404/410, and otherwise propagate the
error.

However, we currently break out of the loop and return `result` (which
may be `null` if no successful requests have been performed yet).

Before we fix our behaviour, we need to clarify what our current
behaviour is.

[0]: https://go.dev/ref/mod#goproxy-protocol

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-03 06:26:57 +00:00
RahulGautamSingh 3b699b3698 feat: configure limiting security updates (#45574)
* configure limiting security updates

* separate security limit from other limits

* rename type

* fix coverage

* add comments

* add test
2026-09-03 06:08:37 +00:00
renovate[bot] 4e436e5ba8 chore(deps): update dependency protobufjs@8.0.1 to v8.8.0 (main) (#45642)
chore(deps): update dependency protobufjs@8.0.1 to v8.8.0

| datasource | package    | from  | to    |
| ---------- | ---------- | ----- | ----- |
| npm        | protobufjs | 8.7.2 | 8.8.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
44.59.3
2026-09-03 00:30:10 +00:00
renovate[bot] f051ed8b31 build(deps): update dependency protobufjs to v8.8.0 (main) (#45641)
build(deps): update dependency protobufjs to v8.8.0

| datasource | package    | from  | to    |
| ---------- | ---------- | ----- | ----- |
| npm        | protobufjs | 8.7.2 | 8.8.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-03 00:29:47 +00:00
RahulGautamSingh 614b15d22b fix(prune): skip branch pruning when branchPrefix is empty (#43891)
* fix(prune): skip branch pruning when branchPrefix is empty

* remove todo

* debug -> awrn
44.59.2
2026-09-02 20:03:42 +00:00
Sanjay Doppalapudi dad0b03b00 fix(manager/npm): run npm install twice during lock file maintenance (#45542)
Lock file maintenance deletes package-lock.json and regenerates it from
scratch, and a single npm install pass can produce a lock file that is out
of sync with package.json, so npm ci rejects the branch. Always run the
install command a second time for lock file maintenance, mirroring the
existing double run for remediations, instead of relying on users opting
in to the npmInstallTwice postUpdateOption. Because branch creation and
rebase share the same lock file generation path, this covers both.
2026-09-02 19:59:02 +00:00
Birger Johan Nordølum 02b1384efe fix(changelog): preserve docker compatibility for changelog release lookup (#45170)
* fix: preserve docker value compatibility for changelogs

* test: cover normalized docker current version in changelogs

* test: cover docker changelog compatibility

* test: use generic docker compatibility suffixes

* test: cover docker compatibility fallback
2026-09-02 19:55:51 +00:00
renovate[bot] d4aaf9e5cd chore(deps): update docker/dockerfile docker tag to v1.27.0 (main) (#45634)
chore(deps): update docker/dockerfile docker tag to v1.27.0

| datasource | package           | from   | to     |
| ---------- | ----------------- | ------ | ------ |
| docker     | docker/dockerfile | 1.26.0 | 1.27.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-02 17:28:39 +00:00
mithil 1133f3b673 fix(versioning/rez): match version precision (#45554) 44.59.1 2026-09-02 17:12:49 +00:00
Dennis Witt fb623bd087 fix(changelog): match release notes for host-qualified names (#45176)
A registry host never appears in a Git tag, so a host-qualified name
such as an OCI chart `<registry>/<org>/<repo>/<chart>` can never match
the tag that publishes it, which is scoped by the chart name alone:
`<chart>-<version>`. Match those names against their host-stripped form
and against their trailing path segment as well. Names that are not
host-qualified, such as scoped npm packages, keep matching in full only.

Escape the interpolated names and version too, so a `.` in a registry
host no longer acts as a wildcard and a name containing regex
metacharacters cannot throw out of `regEx()`.

Signed-off-by: Dennis Witt <dennis@derwitt.de>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
44.59.0
2026-09-02 16:21:02 +00:00
Victor Sollerhed 6d747ea8ff feat(manager): add apm manager for Agent Package Manager (#44390)
* feat(manager): add apm manager for Agent Package Manager

Add a new `apm` manager that updates git-pinned dependencies in APM
(Agent Package Manager) `apm.yml` manifests, as requested in
renovatebot/renovate#42507.

The manager parses the string entries under `dependencies.apm` and
`devDependencies.apm` (`[host/]owner/repo[/subpath]#<ref>`) and selects
the datasource dynamically from the git host, reusing the existing
github-tags, gitlab-tags and git-tags datasources. MCP entries carry no
pinnable version and are ignored.

When an `apm.lock.yaml` lockfile is present, it is refreshed by running
`apm install` via a new `apm` tool constraint (pypi `apm-cli`).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vfjt3BpqDriiVsvwqVe9M9

* fix(manager/apm): resolve apm tool from github releases

APM ships self-contained binaries as GitHub release assets
(apm-linux-<arch>.tar.gz under vX.Y.Z tags), not as the PyPI apm-cli
wheel. Point the apm tool constraint at the github-releases datasource so
the version Renovate resolves matches the artifact that actually gets
installed, stripping the leading `v` from the tag.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vfjt3BpqDriiVsvwqVe9M9

* docs(manager/apm): point to canonical microsoft/apm repository

The APM project's canonical home is github.com/microsoft/apm (originally
danielmeppiel/apm). Update the manager URL and readme accordingly.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vfjt3BpqDriiVsvwqVe9M9

* refactor(manager/apm): validate manifest with zod schema

Address review feedback on the apm manager:

- parse `apm.yml` with a dedicated zod schema via
  `parseSingleYaml(content, { customSchema })` instead of casting the
  parsed YAML to `ApmManifest`
- `LooseArray(z.string())` keeps only the string dependency entries, so
  MCP objects and other non-string values are dropped by the schema and
  the manual `Array.isArray`/`is.string` guards are no longer needed
- drop the `as SkipReason` casts now that the literals are inferred
- remove the now-unused `types.ts`

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UbMAQBiMRNkCNxc8EGQw1C

* Update schema.ts

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

* Update readme.md

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

* Update readme.md

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

* refactor(manager/apm): simplify manifest schema and host detection

Address review feedback:

- default the `apm` array to `[]` in the schema (`LooseArray(...).catch([])`)
  since LooseArray already discards non-string entries, so downstream code
  no longer needs to handle `undefined`
- use `coerceArray` when mapping the optional dependency sections
- drop the redundant `host === 'github.com'` / `host === 'gitlab.com'`
  checks in datasource selection; `detectPlatform` already resolves those
  hosts (the explicit host comparison is only kept to decide registryUrls
  for self-hosted instances)
- document that APM only supports remote git references and that dots in
  repo names / subpaths are handled, with a regression test

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UbMAQBiMRNkCNxc8EGQw1C

* docs(manager/apm): fix readme trailing newline

Remove the trailing blank line left after the readme edits so it passes
`prettier` and `markdown-lint`.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UbMAQBiMRNkCNxc8EGQw1C

* refactor(manager/apm): parse dependency path with named capture groups

Replace the manual host/owner/repo splitting (and the standalone dot
regex) with a single named-capture regex, as suggested in review. `owner`
excludes dots so the optional hostname segment is unambiguous, while repo
names and subpaths may still contain dots.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UbMAQBiMRNkCNxc8EGQw1C

* test(manager/apm): align admin config with InternalGlobalConfigOptions

`localDir` moved out of `RepoGlobalConfig` into `InternalGlobalConfigOptions`
on main, so annotate the test admin config as
`RepoGlobalConfig & InternalGlobalConfigOptions`, matching the other
manager artifacts specs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UbMAQBiMRNkCNxc8EGQw1C

* fix(manager/apm): resolve GitLab nested groups and recognize SHA-pinned refs

- resolve nested GitLab project slugs (e.g. `group/subgroup/project`)
  instead of capping at `owner/repo`, splitting the project from any
  virtual-package subpath using APM's primitive-dir / virtual-file markers
- recognize the documented SHA-pinned form and skip it
  (`unversioned-reference`) rather than treating the SHA as a version or
  rewriting it

* feat(manager/apm): support digest pinning for SHA-pinned deps

Recover the release tag from the trailing YAML comment of a SHA-pinned
entry (`owner/repo#<sha> # v2.0.0`) - which the structured parse strips -
so it extracts as a digest (`currentDigest` + `currentValue`) and updates
both via `pinDigests`, mirroring the github-actions manager. A bare SHA
with no tag comment (or a quoted form we can't rewrite verbatim) is left
skipped.

* fix(manager/apm): map SHA-pin tag recovery per line to handle duplicates

The raw-manifest scan matched the first line for the entry regardless of
section, so the same `owner/repo#<sha>` pinned in both `dependencies` and
`devDependencies` resolved to the first line's tag/replaceString. Consume
each line at most once (in file order) so duplicate pins map to distinct
lines.

* fix(manager/apm): recognize `.chatmode.md` virtual files

APM's VIRTUAL_FILE_EXTENSIONS includes `.chatmode.md`; add it to the
subpath-boundary regex so a `*.chatmode.md` virtual dependency on a
nested-group host (GitLab, Azure DevOps) is not folded into the repo path.

* test(manager/apm): cover SHA-pin digest updates on git-tags hosts

Lock in that a SHA-pinned dep on a non-github/gitlab host resolves via the
git-tags datasource (which supports `getDigest` through `git ls-remote`),
so the commit is preserved on a bump rather than dropped.

* fix(manager/apm): commit regenerated harness files, not just the lockfile

`apm install` re-deploys the harness directories APM consumers commit
(`.github/`, `.claude/`, ...), but updateArtifacts only returned
`apm.lock.yaml`, leaving instruction files stale after a bump. Capture
every file the install changed via `getRepoStatus` (additions +
deletions); the gitignored `apm_modules/` cache is excluded, and the
manifest stays with `updatedPackageFiles`.

* fix(manager/apm): declare lockFileMaintenanceIsDelegatedToPackageManager

main now requires managers with `supportsLockFileMaintenance` to set this
field. apm regenerates the lockfile via `apm install`, so it delegates to
the package manager (`true`).

* refactor(manager/apm): reuse shared regex and git-sha helpers

Adopt the shared utilities per review:

- use the exported `newlineRegex` from `util/regex` instead of a local copy
- use `isLongCommitSha` from `util/schema-utils/git` instead of a bespoke
  SHA regex
- filter path segments with `isTruthy` instead of `Boolean`

* test(manager/apm): align docker exec snapshot with current base-image wrapper

The shared `util/exec` docker wrapper now injects `-e CI` and single-quotes
the `bash -l -c` payload. Update the docker-mode expectation to match, so the
snapshot tracks the current wrapper output.

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Sebastian Poxhofer <secustor@users.noreply.github.com>
2026-09-02 16:17:15 +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>
44.58.0
2026-09-02 16:05:33 +00:00
renovate[bot] d5b78f9f99 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.6 (main) (#45633)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.6

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.95.5 | 13.95.6 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-02 16:04:06 +00:00
Fernando Fernández e631d60813 fix(bitbucket): bbUseDevelopmentBranch fetching (#45626)
* fix(bitbucket): use effective-branching-mode endpoint for bbUseDevelopmentBranch

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>

* refactor(bitbucket): add more logging around BitBucket's branching model

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>

* test(bitbucket): update mock for effective-branching-model

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>

* test(bitbucket): fix forgotten test mock

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>

* chore: address review comments

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>

* fix(bitbucket): tests and types

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>

---------

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
44.57.4
2026-09-02 15:50:47 +00:00
renovate[bot] 927e68a033 chore(deps): update dependency @biomejs/biome to v2.5.10 (main) (#45540)
chore(deps): update dependency @biomejs/biome to v2.5.10

| datasource | package        | from  | to     |
| ---------- | -------------- | ----- | ------ |
| npm        | @biomejs/biome | 2.5.9 | 2.5.10 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-02 14:18:12 +00:00
Alberto Pose 7c5bb7df87 fix: honour dashboard rebase for edited branch with no open PR (#44567)
* fix: honour dashboard rebase for edited branch with no open PR

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* test: drop unconsumed findPr mocks from dashboard rebase test

The new guard short-circuits before platform.findPr, so the mocks were
never reached and the two tests were identical; collapse into one.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* test: assert commitSha loosely in dashboard rebase test

main replaced the shared `'123test'` mock value with `fakeSha('123test')`,
so the literal no longer matches on the merge ref.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
44.57.3
2026-09-02 13:19:30 +00:00
Ben Bodenmiller 13ab659c5e fix(cache): re-add cacache.verify() to garbage collect orphaned content from put() overwrites (#44987)
* fix(cache): re-add cacache.verify() to garbage collect orphaned content from put() overwrites

* Fix lint

* Apply suggestion from @bbodenmiller

* Apply suggestion from @bbodenmiller
2026-09-02 13:18:42 +00:00
renovate[bot] 196f16ace9 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.5 (main) (#45625)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.5

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.95.4 | 13.95.5 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
44.57.2
2026-09-02 10:41:04 +00:00
Gursewak Mangat bbd603e277 fix(manager/git-submodules): init nested submodules in updateDependency (#45606)
fix(git-submodules): init nested submodules in updateDependency

The cloneSubmodules function already uses --init --recursive, but
updateDependency only uses --checkout --init, losing nested submodule
content after updates. This breaks postUpgradeTasks that depend on
files inside nested submodules.

For repos without nested submodules, --recursive is a no-op.
44.57.1
2026-09-02 08:59:52 +00:00
Jamie Tanna c02de67947 fix(reconfigure): capitalise Renovate (#39310) 2026-09-02 08:56:20 +00:00
Jamie Tanna b62fe59594 fix: remove references to "bot" (#39305)
We dropped the "bot" from our terminology long ago, but it looks like
we've got some outdated docs + code that reference it.

We should remove this to keep things consistent.

A `fix`, as we're changing the commit author's name, and log lines.

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-09-02 08:56:20 +00:00
Jamie Tanna ea3b7acede test(util/git): add missing coverage of setGitAuthor (#45607)
As part of follow-up changes, we're removing the "bot" terminology.

While doing so, GitHub Copilot Code Review discovered that there was no
coverage of the defaults in this function.

Before we change this, we can add coverage of the defaults.

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-02 08:56:19 +00:00
Francois Rivard a1ce94c9fa feat(preset): add TUnit monorepo preset (#45612) 44.57.0 2026-09-02 08:20:18 +00:00
Niels Pardon b9f5e3c7d1 docs(conda): clarify minimumReleaseAge is supported (#45622)
The conda datasource has returned `releaseTimestamp` since it was added,
for both the Anaconda.org API (`upload_time`) and prefix.dev
(`createdAt`), but never declared `releaseTimestampSupport`. The docs
therefore listed it as unsupported in both the datasource table and the
`minimumReleaseAge` support table.
2026-09-02 08:08:53 +00:00
renovate[bot] 957d745f93 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.4 (main) (#45620)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.4

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.95.3 | 13.95.4 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
44.56.4
2026-09-02 07:45:23 +00:00
renovate[bot] dff24197b5 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.3 (main) (#45619)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.3

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.95.2 | 13.95.3 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
44.56.3
2026-09-01 23:37:02 +00:00
renovate[bot] 1ea3d33227 chore(deps): update dependency uv to v0.12.9 (main) (#45618)
chore(deps): update dependency uv to v0.12.9

| datasource      | package      | from   | to     |
| --------------- | ------------ | ------ | ------ |
| github-releases | astral-sh/uv | 0.12.8 | 0.12.9 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-01 23:36:33 +00:00
renovate[bot] 681e30cc54 chore(deps): update dependency astral-sh/uv to v0.12.9 (main) (#45617)
chore(deps): update dependency astral-sh/uv to v0.12.9

| datasource      | package      | from   | to     |
| --------------- | ------------ | ------ | ------ |
| github-releases | astral-sh/uv | 0.12.8 | 0.12.9 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-01 22:35:59 +00:00
renovate[bot] 872716abb5 chore(deps): update actions/deploy-pages action to v5.0.1 (main) (#45616)
chore(deps): update actions/deploy-pages action to v5.0.1

| datasource  | package              | from   | to     |
| ----------- | -------------------- | ------ | ------ |
| github-tags | actions/deploy-pages | v5.0.0 | v5.0.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-01 22:35:17 +00:00
renovate[bot] f96de992cf fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.2 (main) (#45614)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.2

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.95.1 | 13.95.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
44.56.2
2026-09-01 21:30:15 +00:00
renovate[bot] eadeb323a8 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.1 (main) (#45609)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.95.0 | 13.95.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
44.56.1
2026-09-01 17:18:34 +00:00
renovate[bot] c6e4e902a9 feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.0 (main) (#45604)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.95.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.94.0 | 13.95.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
44.56.0
2026-09-01 15:39:24 +00:00
Jamie Tanna bf37a4abaa ci: check for Closes #<discussion> (#45462)
Due to a long-standing issue with `semantic-release` not checking if
`#...` reference is for a Discussion or Issue, if a contributor says
`Closes #<discussion>`, then our release process fails.

We can extend our existing checks to try and catch this in the PR
itself, as users may not read the big warning that says "don't add a
Discussion here".

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
44.55.0
2026-09-01 14:35:24 +00:00
Jamie Tanna 135dd45e7e ci: ensure scripts in .github/ are linted (#45593)
As per request in #45462, we can perform a prefactor to ensure that our
scripts for CI-related functionality are part of `tools`, so they're
linted appropriately.

Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-01 14:35:23 +00:00
Dennis Ameling 24c56f9cae feat(manager/npm): add support for bun in the packageManager field (#45572)
* feat: add support for bun in the `packageManager` field

* fix test
2026-09-01 13:13:06 +00:00
Pham Manh Luc ef60dfcdee refactor(manager/npm): rename internal managerData.pnpmShrinkwrap to pnpmLockFile (#45390)
refactor(pnpm): rename managerData.pnpmShrinkwrap to pnpmLockFile

The field holds the path to pnpm-lock.yaml, and pnpm has not called that file
a shrinkwrap since v5, so the old name reads as a different artifact than the
one it points at.

Co-authored-by: Jamie Tanna <jamie.tanna@mend.io>
2026-09-01 13:09:21 +00:00
renovate[bot] d4ac9fc6ee feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.94.0 (main) (#45600)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.94.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.93.3 | 13.94.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-01 13:09:12 +00:00