Commit Graph

3913 Commits

Author SHA1 Message Date
Sebastian Poxhofer a84fb3de11 feat(manager/github-actions): support parallel steps (#44341) 2026-07-02 13:44:38 +00:00
Michael Kriese d8e82a2412 fix(manager/custom/jsonata): handle evaluation errors (#44340) 2026-07-02 10:37:04 +00:00
Mattias Karlsson 5d9e0b82b5 fix(manager/nuget): detect MSBuild SDK updates in sqlproj files (#43831)
* fix(manager/nuget): detect MSBuild SDK updates in sqlproj files

MSBuild SDK versions in `<Sdk>`, `<Import Sdk>`, and `<Project Sdk>`
elements are exact pins, but NuGet versioning treats bare versions as
minimum ranges (`>=`). That caused dependencies such as
`0.1.19-preview` to resolve to the latest release and skip updates.

Apply hybrid versioning to all `msbuild-sdk` dependencies at extract
time: use strict `semver` when the pin is valid semver, otherwise fall
back to `semver-coerced` for non-standard NuGet version strings (e.g.
four-segment revisions). Also add `.sqlproj` to the default manager
file patterns for SSDT SQL projects.

Changes:
- Add `applyMsbuildSdkVersioning()` helper and wire it through all
  msbuild-sdk extract paths (XML, global.json, single-csharp-file)
- Extend `managerFilePatterns` to match `.sqlproj` files
- Add extract, util, index, and integration tests
- Document `.sqlproj` and MSBuild SDK extraction in nuget docs/readme

* fix(manager/nuget): use bump range strategy for msbuild-sdk deps

Replace hybrid semver versioning for MSBuild SDK pins with a default
package rule (`matchDepTypes: msbuild-sdk`, `rangeStrategy: bump`) per
review feedback. Remove `applyMsbuildSdkVersioning()` from all extract
paths and update tests accordingly. Sort nuget doc file extensions
alphabetically.
2026-07-02 05:13:47 +00:00
Florian Schwalm 5ddd565c4e fix(deno): lockfile update in presence of private registries (#43147)
* fix: deno lockfile update in presence of private registries

Renovate was unable to update the lockfile when updating packages from
public registries if any packages from private registries were
referenced in the package file.

This commit fixes this by processing host rules and configuring the
`deno install` invocation for those private registries.

Note that this still doesn't mean support for updating packages from
private registries, it just unblocks lockfile updates in projects where
private registries are used in parallel to public registries.

* fixup! fix: deno lockfile update in presence of private registries
2026-07-01 16:55:10 +00:00
Taku Kodama 333ace1fcf fix(manager/mise): install resolver tools during mise lock (#44174)
* fix(manager/mise): install resolver tools during mise lock

When binarySource=install, Containerbase only installs tools listed in
toolConstraints. mise lock can invoke npm, go, and gem CLIs while
resolving versions for those backends, but Renovate previously only
installed mise itself.

* fix(manager/mise): use go constraint for golang resolver

* test(manager/mise): remove redundant resolver constraint test

* test(manager/mise): cover resolver tool dynamic installs

* test(manager/mise): cover unconstrained resolver lock updates

* Update lib/modules/manager/mise/artifacts.ts

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

* style(manager/mise): fix prettier whitespace in JSDoc comment

* test(manager/mise): clarify what happens with no `constraints`

* chore(manager/mise): update JsDoc

---------

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
Co-authored-by: Jamie Tanna <jamie.tanna@mend.io>
2026-06-30 21:20:47 +00:00
Sergei Zharinov 5d7903979a feat(versioning/node): support Semver pre-release versions for Node 27 (#44281) 2026-06-29 08:15:30 +00:00
renovate[bot] a1669f3ba7 docs: update references to python to 5c48543 (main) (#44279)
docs: update references to python to 5c48543

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-29 00:32:57 +00:00
Sebastian Poxhofer 1e43d46756 fix(schema-utils): support for GitHub bot style email addresses (#44249) 2026-06-26 12:43:10 +00:00
Tobias Bieniek b84a54cda7 fix(datasource/crate): tolerate null metadata fields (#44227)
* fix(datasource/crate): tolerate null metadata fields

crates.io returns `null` for unset crate metadata fields. `z.string().optional()`
rejects `null`, so a single null field (e.g. `documentation` on the `sentry` crate)
failed the whole metadata parse and discarded the valid `repository`, leaving
`sourceUrl` unset and breaking monorepo grouping. Use `.nullish()` so null fields
are tolerated.

* datasource/crate: Use `Nullish()` for metadata

* datasource/crate: Use `sentry` for null metadata test

* datasource/crate: Use `DeepNullish()` for metadata
2026-06-25 15:21:39 +00:00
Matthew Nitschke 2258aa4180 fix(manager/pub): Always populate pub extracted constraints (#44220)
always populate pub extracted constraints
2026-06-25 05:51:41 +00:00
Matthew Nitschke 4ad5bc1b44 feat(manager/pub): extract constraints (#44171)
* added dart/pub constraintsFilter support

* updated documentation to include pub for constraintsFiltering

* only add extractedConstraints if its populated

* increased coverage

* handle non-nullable environment.sdk better
2026-06-23 15:37:59 +00:00
Illia Mazuriak fed1eb1066 fix(platform/azure): avoid corrupting HTML entities and URL anchors in massageMarkdown (#44131)
The `#(\d+)` -> `!$1` replacement added in #42758 over-matched any `#`
followed by digits, corrupting HTML entities such as `&#8203;` (becomes
`&!8203;`) and changelog URL anchors such as `CHANGELOG.md#4780` (becomes
`!4780`) in Azure DevOps PR bodies.

Only convert a standalone reference preceded by start-of-string, whitespace
or `(`, matching the boundary already used in util/markdown.ts.
2026-06-23 14:43:59 +00:00
Matthew Nitschke cce3e869e4 feat(datasource/dart): Added support for constraints extraction (#44191)
added support for constraints extraction to the dart manager
2026-06-23 14:15:12 +00:00
Jamie Tanna 677470b75c chore(manager/mix): extract hardcoded Erlang version for updates (#44180)
* chore(manager/mix): extract hardcoded Erlang version for updates

As noted in #44149, we're not performing updates to the version of
Erlang, which means that unless users specify a `constraints.erlang`,
they are resolved to Erlang 25.3.2.21 (2025-07-09).

To start getting updates more frequently, we can extract this with a
Custom Manager, with:

- `loose` versioning (per #26768) for the 4-part versioning
- `extractVersion` to make sure we only get the first major
- `separateMultipleMajor` to allow us control over how we update
- a `renovate:` comment for visibility

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

* fixup! chore(manager/mix): extract hardcoded Erlang version for updates

---------

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-06-23 13:29:59 +00:00
renovate[bot] b60b4058b0 docs: update references to python to 4d7dd74 (main) (#44136)
docs: update references to python to 4d7dd74

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-22 00:29:01 +00:00
Yuchen Shi a8b864363c fix(manager/flux): extract both commit and branch for GitRepository (#43560) 2026-06-19 10:35:11 +00:00
Jamie Tanna 89be048657 refactor: use GlobalConfig for productLinks (#44098)
As a follow-up to e1e5c398e0, we can make
sure that we remove references to hardcoded docs site URLs, by wiring in
the `GlobalConfig.get(...)` call.

To do this, we need to make sure that `productLinks` exists to be called
by `GlobalConfig.get`.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-06-19 10:34:03 +00:00
Pieter Willekens f88e12040b feat(datasource/packagist): prefer published-time over time for release timestamp (#44021)
* feat(datasource/packagist): prefer published-time over time for release timestamp

* refactor(datasource/packagist): use Nullish util for published-time

* Update lib/modules/datasource/packagist/schema.ts

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

---------

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
2026-06-18 09:47:53 +00:00
Pieter Willekens 1a0536d375 fix(manager/mise): disable digest pinning (#44036)
mise tool versions are plain version strings (e.g. `"aqua:pnpm/pnpm" = "11.6.0"`)
with no syntax to attach a commit digest, so a digest can never be written to a
mise config file. Backends such as aqua and core resolve to the github-tags
datasource, which exposes `getDigest`, so a global `pinDigests: true` makes
Renovate emit `pinDigest` updates for mise tools. These updates produce no file
change and then fail post-update verification with "Digest is not updated" ->
"Error updating branch: update failure" on every run.

Disable digest pinning at the manager level, matching terraform, gomod, and the
other managers whose dependencies have no place to store a digest.
2026-06-18 09:46:32 +00:00
Jamie Tanna e1e5c398e0 chore: ensure we use productLinks for docs site links where possible (#44066)
* chore: ensure we use `productLinks` for docs site links where possible

Where possible, we should be making sure that we're using the
`productLinks`' configuration for  the documentation site, especially
where self-hosted users may create a mirror of their docs[0].

To make sure we catch this in the future, we can introduce a custom
linting rule with Oxlint to enforce this.

Where we (currently) can't wire in the config, we can disable it against
that line.

[0]: https://www.jvt.me/posts/2024/11/19/renovate-private-docs/

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

* fixup! chore: ensure we use `productLinks` for docs site links where possible

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

* fixup! chore: ensure we use `productLinks` for docs site links where possible

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

---------

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-06-18 08:55:27 +00:00
Sergei Zharinov 75e6c00fb0 fix(semver): Add legacy layer for x-ranges (#44074)
* test(versioning): cover legacy x-range behavior

* fix(versioning): preserve legacy x-ranges with semver
2026-06-18 08:50:43 +00:00
Jamie Tanna 1754bb86ad fix(datasource/npm): handle array of repository for legacy packages (#44061)
When attempting to perform dependency updates on the `tmp` package,
parsing a previous version's Zod schema results in a lookup failure, as
it had an incorrect form of `repository` as of tmp@0.0.4.

We can handle this by treating it more loosely to convert an array of
repositories into a single element, and handle this on both a
per-version and per-package lookup.

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-06-18 08:39:57 +00:00
Pieter Willekens 3575630864 feat(datasource/packagist): mark abandoned packages as deprecated (#44037)
* feat(datasource/packagist): mark abandoned packages as deprecated

Parse Packagist's `abandoned` field and surface it via `isDeprecated`
and `deprecationMessage`, matching how the npm datasource handles npm's
`deprecated` field. When `abandoned` is a replacement package name, the
message suggests it.

This is an official registry signal, so it maps to Renovate's
deprecation mechanism, not the timestamp-based abandonment heuristic.

* test(datasource/packagist): drop incorrect output-type annotation on raw input

* update tests

* Update lib/modules/datasource/packagist/schema.ts

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

---------

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
2026-06-18 08:36:07 +00:00
Sebastian Poxhofer 0cfffb7ffd fix(platform/forgejo): support empty string email and normalize to undefined (#44068) 2026-06-17 19:14:18 +00:00
Jonathan Morley 5b4e0947cb fix(docker): handle maxResults error on auth probe for ECR repo (#43657)
* fix(docker): handle 405 maxResults error on auth probe for ECR-compatible proxies

Some private Docker registries that front ECR reject `n=10000` on the tags
URL even during the auth-probe request, returning a 405 with the ECR-style
"Member must have value less than or equal to 1000" error body.
`getAuthHeaders` had no handler for this case and returned null, so the
lookup aborted before the main fetch loop's existing n=1000 retry could fire.

Fix: extract `isECRMaxResultsResponse` from `isECRMaxResultsError` in ecr.ts
and use it in `getAuthHeaders` to detect the 405 pattern. When matched, fall
back to probing the base `/v2/` endpoint for auth, then let the existing
`isECRMaxResultsError` retry in the tag-fetch loop handle the n=1000 fallback.

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

* fix(docker): address PR review comments on ECR proxy auth probe fix

- Shorten test token to 'abc' to avoid CodeQL secret-detection false positive
- Replace HttpResponse<any> with HttpResponse<unknown> in common.ts and ecr.ts

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

* fix(docker): replace HttpResponse<any> with HttpResponse<unknown> in isECRMaxResultsResponse

Cast body to a typed shape inline instead of widening the whole response to any.

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

* test(docker): replace toMatchInlineSnapshot with toEqual in ECR auth probe test

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 16:18:10 +00:00
Sebastian Poxhofer f9305c2826 fix(platform/forgejo): tollerate null values for Issues (#44048) 2026-06-16 19:48:26 +00:00
Sebastian Poxhofer 7573fa98f2 feat(platform/forgejo): validate http request with schemas (#43900)
* fix(platform/forgejo): replace getJsonUnchecked with validated getJson

Migrate all getJsonUnchecked calls in the Forgejo platform module to use
getJson with Zod schemas for response validation. Add comprehensive Zod
schemas to schema.ts and update test mocks to use proper data formats.

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

* simplify by using infered types

* first pass on reducing duplications

* move PrStatus and CommitStatus to schema

* remove code handling BranchStatus values now ensured by schema

* remove now unreachable code

* fix coverage

* use forgejo schemas instead gitea for changelog fetching

* feat: do not abort repo on unrecognized default merge style

* refactor: instead of usages of `?? {}` with a default parameter

* tighten required parameters and move contentString generation to schema

* refactor: merge both content schemas and use a discriminated union

* refactor: move patchJson and postJson to schema validation

* Make body field required

* make schema more strict

* use DeepNullish

* simplify catch

* revert the gitea Content type change

* unify User

* log more nicely if accidentally not a file has been referenced

* Use fakeSha and LongCommitSha schema

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-16 14:22:01 +00:00
Nahrin 372b258a05 docs(manager/sveltos): remove duplicated depTypes table from readme (#44016)
Move the Sveltos documentation links into the dep-types.ts description
fields so they appear in the auto-generated Dependency types table.
Replace the duplicate hand-written table in readme.md with a config
example showing how to use depTypes for fine-grained control.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-16 05:48:01 +00:00
Nahrin 7c256166b3 test(manager/github-actions): add missing community action tests (#44018)
Add test coverage for community actions that had no corresponding
tests: azure/setup-helm, docker/setup-buildx-action,
docker/setup-compose-action, helm/chart-testing-action, and
sigoden/install-binary.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-16 05:45:22 +00:00
Sebastian Poxhofer ee55af49e4 feat(docker): use schema validated getJson (#43775)
* fix(docker): replace getJsonUnchecked with validated getJson

Replace all getJsonUnchecked calls in the Docker datasource with
Zod-validated getJson calls. Add RegistryAuthToken, RegistryTagsList,
and QuayTagsResponse schemas to schema.ts and add unit tests for them.

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

* do not use getJson if we do not look at the body

* chore: default to false for safety

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 07:19:42 +00:00
RahulGautamSingh 8be9e6bb6c fix(manager/deno): tolerate compilerOptions without jsx fields (#44002)
The zod v4 migration made compilerOptions fail validation when jsxImportSource/jsxImportSourceTypes keys were absent, aborting Deno dependency extraction.
2026-06-15 07:16:35 +00:00
Sebastian Poxhofer 171a591d84 feat(git): validate commit shas (#43988)
* feat(git): validate length commit shas

* test: adapt test mocks

* chore: update import paths

* feat(git): make the validation more strict and support repositories using sha256

* test: add fakeSha function for deterministic git commit shas in tests
2026-06-15 06:36:57 +00:00
Nahrin cc32f48c9c docs(versioning): replace bare links with descriptive markdown links in urls (#43951)
* fix(versioning): replace bare links with descriptive markdown links in urls

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

* refactor: export markdownLinkRegex from common.ts and import in test

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-15 06:30:54 +00:00
renovate[bot] 1ac09e77e2 docs: update references to python to 6f473f8 (main) (#43993)
docs: update references to python to 6f473f8

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-15 00:28:08 +00:00
Matthias Baur e0cf904a6a fix(helmv3): skip helm-git repositories (#43932)
Co-authored-by: Copilot copilot@github.com
2026-06-13 11:44:47 +00:00
Tobias Bieniek a73e4d1adc feat(manager/github-actions): support dtolnay/rust-toolchain toolchain input (#43956)
* feat(manager/github-actions): support dtolnay/rust-toolchain `toolchain` input

Extract the `toolchain` input of `dtolnay/rust-toolchain` as a `rust` dependency via the `rust-version` datasource, mirroring the rust-toolchain manager. Sliding-window expressions like `stable 18 months ago` are extracted as-is and rejected by the `rust-release-channel` versioning during lookup.

* feat(manager/github-actions): add rust-version datasource to `supportedDatasources`
2026-06-13 08:04:51 +00:00
Martin Costello 40450a840e feat(datasource/github-runners): add macOS Intel labels (#43540)
* feat(datasource/github-runners): add macOS Intel labels

Add `macos-15-intel` and `macos-26-intel` runner labels to the datasource.

* feat(datasource/github-runners): add tests

Add test for upgrading macos-*-intel runners.

* chore(datasource/github-runners): split tests

Split-up the tests into different operating system families.
2026-06-11 20:28:57 +00:00
Martin Costello 6c6621e220 feat(datasource/github-runners): add ubuntu 26 (#43950)
Add support for GitHub Actions `ubuntu-26.04` and `ubuntu-26.04-arm` runners in preview.
2026-06-11 20:28:09 +00:00
Roshan Banisetti 5a8b5bbedd feat(platform/gitea,forgejo): use login instead of username for user handles (#43904)
refactor(platform/gitea,forgejo): replace username with login in User types
2026-06-10 06:10:43 +00:00
Sebastian Poxhofer dfe806f9ac refactor(gerrit): use schema validated getJson instead of getJsonUnchecked (#43777)
* fix(platform/gerrit): replace getJsonUnchecked with validated getJson

Migrate all getJsonUnchecked calls in lib/modules/platform/gerrit/client.ts
to use Zod-validated getJson. Co-locate schemas in schema.ts with lenient
optional fields to ensure backward compatibility with all existing API responses.

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

* strictly follow previous interfaces

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 17:23:04 +00:00
Jiri Daněk def09c2661 fix(github): use base_tree in pushFiles to avoid org ruleset file-path restrictions (#42556)
* fix(github): use base_tree in pushFiles to avoid org ruleset file-path restrictions (#42554)

pushFiles sent the entire repo tree to POST /git/trees without base_tree.
GitHub validates all file paths against org rulesets, rejecting the tree
when it contains protected files (e.g. semgrep.yaml) — even if Renovate
only changed unrelated paths.

Use base_tree (parent commit's tree) with only the changed files from
git diff-tree, so unchanged protected files are inherited without
validation.

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

* test(git): add coverage for getCommitTreeSha and diffCommitTree

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

* fix(test): assert specific files instead of hardcoding diff count

The test fixture creates 2 known files between develop and
defaultBranch (master_file, file_to_delete), but CI produces 3
changed files — likely a .gitattributes from the CI environment.
Assert on the known files rather than the total count.

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

* fix(git): handle renames, copies, and submodules in diffCommitTree

- Regex now matches multi-char status codes (R100, C100) and
  tab-separated source/target paths for renames and copies.
- Renames emit a deletion for the source path + addition for target.
- Derive tree item type from mode: 160000→commit, 040000→tree,
  otherwise blob.

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

* refactor(git): address review comments in diffCommitTree

Keep git utility types centralized and make diff status handling easier to follow.

Made-with: Cursor

* test(git): cover rename handling in diffCommitTree

Verify that renamed files are emitted as a deletion for the old path and an addition for the new path, matching the tree delta expected by GitHub.

Made-with: Cursor

* fix(git): validate parsed tree SHA

Fail fast when commit output cannot be parsed into a tree SHA so pushFiles does not propagate an invalid base_tree, and cover the failure path in tests.

Made-with: Cursor

* fix(git): enable rename detection and cover remaining diffCommitTree branches

Add -M to diff-tree so Git emits R status for renames, exercising the
existing case 'R' handler. Add focused tests for rename parsing,
submodule mode (160000), and tree mode (040000).

Made-with: Cursor

* fix(git): clarify copy vs rename comment in diffCommitTree

R uses both tab-separated paths (delete old + add new), while C falls
through to default where only the target path matters.

Made-with: Cursor

* refactor(git): remove dead listCommitTree and TreeItem

Nothing imports listCommitTree after the switch to diffCommitTree with
base_tree. Remove the function, its regex, its test, and the TreeItem
interface.

Made-with: Cursor

* refactor(git): tighten DiffTreeItem.type to GitObjectType union

Define GitObjectType = 'blob' | 'tree' | 'commit' and use it in
DiffTreeItem and treeTypeFromMode instead of plain string.

Made-with: Cursor

* fix(git): remove unreachable nullish coalescing in getCommitTreeSha

split()[0] on a non-empty string is always defined, so the ?? ''
fallback was unreachable and caused an uncovered branch in Codecov.

Made-with: Cursor

* fix(git): add v8 ignore for partial branch on throw template literal

v8 reports template literal interpolations inside throw as partial
branch coverage even when the line is tested. Use the established
v8 ignore pattern to suppress the false positive.

Made-with: Cursor

* fix(github): guard pushFiles against empty diff from diffCommitTree

GitHub's POST /git/trees rejects an empty tree array with 422
"Invalid tree info". While prepareCommit already prevents no-op
commits from reaching pushFiles, add a defensive early return so
the failure mode is a clear log message instead of a swallowed 422.

Made-with: Cursor

* docs(github): document hybrid git/REST commit strategy in pushFiles

Restore architectural knowledge from PRs #13824 and #14271 that was
lost when the old "for reasons unknown" comments were replaced. The
push-then-recreate pattern exists because custom refs avoid CI triggers,
REST-created commits get GitHub signing, and GraphQL lacks force-push
and file mode support.

Made-with: Cursor

* fix(git): wrap bare regex literals in regEx() in tests

Use the project's regEx() helper instead of bare /pattern/ in
toMatch and stringMatching calls, consistent with repo conventions.

Made-with: Cursor

* fix(git): revert regEx() in expect.stringMatching (only accepts bare RegExp)

expect.stringMatching() is a Vitest/Jest API that requires a native
RegExp, not the wrapped object from Renovate's regEx() helper.

Made-with: Cursor

* fix(git): drop line count from v8 ignore next

Vitest uses ast-v8-to-istanbul which is AST-aware: it ignores the
entire next AST node (here the whole throw statement), making the
line count unnecessary.

Made-with: Cursor

* refactor(git): replace magic mode strings with GitTreeMode enum

Introduce a documented GitTreeMode enum in types.ts and use it in
treeTypeFromMode, replacing raw '160000'/'040000' literals with named
members linked to the git data model documentation.

Made-with: Cursor

* fix(git): use const object instead of enum for GitTreeMode

Node's TypeScript strip-only mode does not support enum syntax.
Use `as const` object pattern consistent with the rest of the codebase.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 09:08:20 +00:00
Felipe Santos 33ca9e6ed7 test: fix test cases failing inside devcontainer (#43886) 2026-06-09 06:50:08 +00:00
Alex Waibel 5e4ef7486e fix(manager/flux): pin tag-only OCIRepository digests to spec.ref.digest (#43753)
* fix(flux): pin tag-only OCIRepository digests to separate ref.digest field

* fix(flux): simplify range checks in extractOCIRefTagRange function

* fix(extract): improve handling of OCI reference nodes by using Scalar types

* fix(extract): refactor findOCIRefNodes to accept parsed documents instead of raw content

* fix(extract): update OCIRepository handling to extract tag-only refs with YAML aliases
2026-06-08 19:22:12 +00:00
Sebastian Poxhofer d23bef9637 refactor(schema-utils): add DeepNullish and use it for conda pypi (#43877)
* refactor(schema-utils): add DeepNullish and use it for conda pypi

* docs: add some docs for zod usage
2026-06-08 13:52:58 +00:00
Martijn van der Meij 5e1f88afc6 fix(npm): use packageName for pnpm overrides with range selectors in minimumReleaseAgeExclude (#43477)
* fix(npm): use packageName for pnpm overrides with range selectors in minimumReleaseAgeExclude

For pnpm.overrides entries with version range selectors (e.g. "pkg@<=1.0.0"),
depName contains the full override key including the selector, which is needed
to correctly update package.json. However this caused invalid entries in
minimumReleaseAgeExclude like "fast-xml-parser@<=5.3.5@5.5.7" instead of
"fast-xml-parser@5.5.7", breaking pnpm install with ERR_PNPM_INVALID_MINIMUM_RELEASE_AGE_EXCLUDE.

Fix by using packageName (bare npm package name parsed by @pnpm/parse-overrides)
instead of depName when constructing minimumReleaseAgeExclude entries. Falls back
to depName for dependency types where packageName is not set.

Made-with: Cursor

* test(npm): format pnpm override minimumReleaseAgeExclude test

Use codeBlock helper for expected pnpm-workspace.yaml contents per review.

* test(npm): avoid string concat in shrinkwrap exclude test

Use template literal instead of + to satisfy restrict-plus-operands.

* fix(npm): replace malformed minimumReleaseAgeExclude entries

Skip invalid package@version lines (extra @ after package prefix) when
matching excludes, and replace them instead of appending versions.

* test(npm): cover valid vs malformed exclude matching

* Update lib/modules/manager/npm/artifacts.spec.ts

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

* Update lib/modules/manager/npm/artifacts.spec.ts

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

* test(npm): use codeBlock for expected workspace contents

* fix(npm): remove stale malformed minimumReleaseAgeExclude entries

When a valid exclude entry exists for the same package, drop leftover
malformed lines from the prior double-@ bug instead of leaving them.

* test(npm): avoid string concat in codeBlock expectations

Use template literal instead of + '\n' for prefer-template.

---------

Co-authored-by: Tapio Oikarinen <tapio.oikarinen@hoxhunt.com>
Co-authored-by: Martijn van der Meij <Squixx@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2026-06-08 13:27:08 +00:00
Tinus Mørch Abell 2abd139cd2 feat(platform/github): support gitUrl option on github (#43531)
* feat(config): add github to gitUrl supportedPlatforms

Declare GitHub as a supported platform for the gitUrl option so users
can configure ssh/endpoint URL resolution on github.com and GHES.

Wiring in the github platform module follows in subsequent commits.

Refs: renovatebot/renovate#43086

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

* feat(platform/github): fetch sshUrl from repoInfoQuery

Add sshUrl to the GraphQL repository query and to the GhRepo type so
the platform can resolve SSH-based git remotes. Typed as nullable
to match the gitlab pattern and to allow a missing-field error path.

Refs: renovatebot/renovate#43086

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

* feat(platform/github): add getRepoUrl helper

Introduce a getRepoUrl helper that returns the repository git URL based
on the gitUrl option:
- 'ssh' uses the sshUrl from the GraphQL repo response; throws
  CONFIG_GIT_URL_UNAVAILABLE if not available
- 'default' and 'endpoint' build an https URL from the configured
  endpoint with credentials embedded (current behavior)

The helper is unused in this commit; initRepo wiring follows.

Refs: renovatebot/renovate#43086

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

* feat(platform/github): support gitUrl in initRepo

Destructure gitUrl from RepoParams and replace the inline URL
construction with getRepoUrl calls. The working URL uses the fork's
ssh_url when running in fork mode, otherwise the GraphQL repo.sshUrl.
The upstream URL (used when forkCreation and a parentRepo is set)
uses repo.sshUrl, which is the parent's URL because the GraphQL
query runs before the fork swap.

GhRestRepo gains an ssh_url field so findFork/createFork responses
can carry the fork's SSH URL forward.

Refs: renovatebot/renovate#43086

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

* test(platform/github): cover gitUrl branches

Add unit tests for getRepoUrl in utils.spec.ts and three integration
tests in index.spec.ts that exercise initRepo with gitUrl=ssh:

- ssh URL is forwarded to git.initRepo
- missing sshUrl with gitUrl=ssh throws CONFIG_GIT_URL_UNAVAILABLE
- fork mode uses the fork's ssh_url for url and the parent's sshUrl
  for upstreamUrl

initRepoMock and forkInitRepoMock now include sshUrl in the GraphQL
response so existing tests continue to populate the field that the
new code path reads.

Refs: renovatebot/renovate#43086

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

* docs: note github-specific gitUrl behavior

Document that 'default' and 'endpoint' produce the same URL on GitHub,
that 'ssh' uses the repository's sshUrl, and that fork mode propagates
SSH selection to both the working URL and the upstream URL.

Refs: renovatebot/renovate#43086

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

* refactor(platform/github): pass parsed URL to getRepoUrl

Accept a pre-parsed URL in getRepoUrl instead of re-parsing the
endpoint string inside the helper. The endpoint is validated during
initPlatform so the helper no longer needs its own null check. The
caller now parses once and passes the URL to both initRepo call
sites; the helper clones it before mutating.

Also assert config.repository as non-null at the initRepo call site,
fixing the TS2345 error reported by the lint-other job.

* Update docs/usage/self-hosted-configuration.md

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

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
2026-06-08 11:51:46 +00:00
renovate[bot] 813132441d docs: update references to astral-sh/setup-uv to v8.2.0 (main) (#43857)
docs: update references to astral-sh/setup-uv to v8.2.0

| datasource  | package            | from   | to     |
| ----------- | ------------------ | ------ | ------ |
| github-tags | astral-sh/setup-uv | v8.1.0 | v8.2.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-08 00:26:59 +00:00
renovate[bot] 9245b57c58 chore(deps): update linters to v1.67.0 (main) (#42416)
* chore(deps): update linters to v1.67.0

| datasource | package | from   | to     |
| ---------- | ------- | ------ | ------ |
| npm        | oxlint  | 1.57.0 | 1.67.0 |

* test(oxlint): deactivate new tests for now

* fixup linting errors

* revert googleAuth mock implementation

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: secustor <sebastian@poxhofer.at>
2026-06-06 14:09:05 +00:00
RahulGautamSingh 4f7eed4273 feat(manager/nuget): default rangeStrategy to bump (#43820)
* docs(manager/nuget): treat bare-version as range

* nuget: default rangeStrategy to bump

* Update lib/modules/manager/nuget/index.ts

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

* apply suggestions

---------

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
2026-06-05 20:22:22 +00:00
Jamie Tanna 4bf6bd9b92 docs(manger/github-actions): reword "community actions" section (#43829)
* docs(manger/github-actions): reword "community actions" section

As some follow-ups to 27a3f5871f, we
can slightly reword the intro to add some more information about what
these target.

* docs(manager/github-actions): document why there may not be a `packageName`

* docs(manager/github-actions): generate a table for Actions and their `with`s

To provide further clarity on how each of the Actions' `with`s are used,
we can make this more explicit in our autogenerated docs, providing:

- which field(s) are extracted, taken from their Zod schema (with help
  from Claude Opus to extract this)
- note the dependency updating, and where it may be determined from the
  given `withSchema`

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

---------

Co-authored-by: Claude Opus 4.7 <jamie.tanna+claude-code@mend.io>
2026-06-05 16:05:15 +00:00