Commit Graph

1722 Commits

Author SHA1 Message Date
Jamie Tanna d91e6088ff fixup! test: set up mutation testing with Stryker
The `mutation-pr`/`mutation-full` CI jobs were failing outright, and a
full `stryker run` never got past the initial dry run, so none of this
was actually usable yet.

- `mutation.yml`: pin all actions to a commit SHA, add a `permissions`
  block, set `persist-credentials: false`, and pass the base ref/changed
  files through `env` instead of interpolating them into the shell
  script directly (zizmor was flagging all of these). Also switch to the
  project's own `./.github/actions/setup-node` composite action instead
  of `pnpm/action-setup`/`actions/setup-node` (which additionally
  referenced a non-existent `.node-version` file), and fix the `pnpm
  mutation`/`pnpm stryker run --mutate` calls to use the actual
  `test:mutation`/`test:mutation:changed` script names.
- Drop the now-unused `@stryker-mutator/typescript-checker` dependency,
  left over from when `stryker.config.json` still had `checkers:
  ["typescript"]`.
- `lib/util/timestamp.ts`: the local-timezone-offset fallback used in
  `asTimestamp()` was cached in a module-level constant computed once at
  import time. Combined with vitest's `threads` pool (used by Stryker's
  vitest-runner) not reliably honouring a `process.env.TZ` set from our
  own `test/setup.ts`, this made `asTimestamp()` parse plain dates (e.g.
  Jenkins' `buildDate: 'Jan 02, 2020'`) using the host's real timezone
  instead of UTC. Compute the offset per call instead, and set `TZ=UTC`
  in the actual environment via the `test:mutation*` scripts, since that's
  the one thing that reliably works across pools.
- `test/setup.ts`: restore real timers in a top-level `afterAll`, so a
  spec that leaves fake timers running (there's at least one) can't leak
  a frozen clock into whichever spec runs next in the same worker -
  something that's only reachable under low-concurrency/single-threaded
  execution.
- Raise `dryRunTimeoutMinutes` and the global vitest `testTimeout`: our
  full suite's per-test coverage instrumentation run took ~25 minutes
  end-to-end, well past Stryker's 5 minute default, and a couple of
  CPU-heavy specs (WASM PGP crypto) timed out under that contention too.
- Ignore `.stryker-tmp/` (Stryker's sandbox dir, which can survive an
  interrupted run) in ls-lint/oxlint/biome/prettier/vitest, since a
  leftover sandbox copy of the repo was otherwise picked up as extra
  source/test files and broke those tools outright.

Co-Authored-By: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-10 15:38:01 +01:00
Jamie Tanna 32e4896ee4 fixup! test: set up mutation testing with Stryker
Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-09-10 13:30:58 +01:00
Jamie Tanna 768041604e Merge remote-tracking branch 'origin/main' into test/mutation
# Conflicts:
#	package.json
#	pnpm-lock.yaml
2026-09-10 13:17:34 +01:00
Michael Kriese 9344de3dc0 ci: raise coverage thresholds to measured values (#45843)
Sets each floor to the current measured coverage, rounded down to two
decimals:

  statements  99.993944%  -> 99.99
  branches    98.703754%  -> 98.70
  functions  100%         -> 100
  lines       99.993880%  -> 99.99

This leaves very little slack by design: one uncovered branch is
0.00386%, so the branches floor tolerates none.

Co-authored-by: Claude Opus 5 <michael.kriese+claude-code@mend.io>
2026-09-10 10:28:41 +00:00
Michael Kriese 8e965bfe2c chore: drop stale legacy-decryption coverage exclusion (#45841)
lib/config/decrypt/legacy.ts was removed in #39111, so
getCoverageIgnorePatterns() only ever excluded a path that no longer
exists, and the TEST_LEGACY_DECRYPTION workflow env var that gated it
was read by nothing else.

Coverage is unaffected: a full run reports the same numbers before and
after, so the thresholds stay as they are.

Co-authored-by: Claude Opus 5 <michael.kriese+claude-code@mend.io>
2026-09-10 10:28:40 +00:00
Michael Kriese dfc9890368 ci: tighten statements and functions coverage thresholds (#45833)
ci: tighten statements and functions thresholds

Both metrics have headroom against the current measured coverage
(statements 99.9899%, functions 99.9864%), so the floors can move up
without depending on any other pull request landing first.

Co-authored-by: Claude Opus 5 <michael.kriese+claude-code@mend.io>
2026-09-10 07:28:13 +00:00
Michael Kriese 069c950574 ci: raise coverage thresholds (#45831)
Co-authored-by: Claude Opus 5 <michael.kriese+claude-code@mend.io>
2026-09-10 07:00:20 +00:00
renovate[bot] 760b8be911 chore(deps): update dependency astral-sh/uv to v0.12.12 (main) (#45821)
chore(deps): update dependency astral-sh/uv to v0.12.12

| datasource      | package      | from    | to      |
| --------------- | ------------ | ------- | ------- |
| github-releases | astral-sh/uv | 0.12.11 | 0.12.12 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-09 17:19:01 +00:00
renovate[bot] 40aedc3548 chore(deps): update github/codeql-action action to v4.38.0 (main) (#45816)
chore(deps): update github/codeql-action action to v4.38.0

| datasource  | package              | from    | to      |
| ----------- | -------------------- | ------- | ------- |
| github-tags | github/codeql-action | v4.37.9 | v4.38.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-09 14:23:24 +00:00
renovate[bot] 42cf188fdc chore(deps): update dependency astral-sh/setup-uv to v10 (main) (#45808)
chore(deps): update dependency astral-sh/setup-uv to v10

| datasource  | package            | from   | to      |
| ----------- | ------------------ | ------ | ------- |
| github-tags | astral-sh/setup-uv | v9.0.0 | v10.0.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-09 12:46:52 +00:00
renovate[bot] f93caed14e chore(deps): update zizmor (main) (#45788)
chore(deps): update zizmor

| datasource  | package                   | from   | to     |
| ----------- | ------------------------- | ------ | ------ |
| docker      | ghcr.io/zizmorcore/zizmor | 1.30.0 | 1.30.1 |
| github-tags | zizmorcore/zizmor-action  | v0.6.3 | v0.6.4 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-09 06:26:17 +00:00
renovate[bot] 152d289054 chore(deps): update dependency astral-sh/uv to v0.12.11 (main) (#45776)
chore(deps): update dependency astral-sh/uv to v0.12.11

| datasource      | package      | from    | to      |
| --------------- | ------------ | ------- | ------- |
| github-releases | astral-sh/uv | 0.12.10 | 0.12.11 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-08 21:23:44 +00:00
renovate[bot] cee2d1f851 chore(deps): update dependency astral-sh/uv to v0.12.10 (main) (#45714)
chore(deps): update dependency astral-sh/uv to v0.12.10

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-05 00:24:27 +00:00
Vladislav 26fe7b0c33 ci: check TODOs for closed issues (#45575)
* ci: check TODOs for closed issues

Signed-off-by: Vladislav Lapin <51929896+loglapa@users.noreply.github.com>

* ci: fold TODO check into undesirable code workflow

Signed-off-by: Vladislav Lapin <51929896+loglapa@users.noreply.github.com>

* ci: name TODO reference capture

Signed-off-by: Vladislav Lapin <51929896+loglapa@users.noreply.github.com>

---------

Signed-off-by: Vladislav Lapin <51929896+loglapa@users.noreply.github.com>
2026-09-04 19:54:58 +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
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
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>
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
renovate[bot] d481d33bcd chore(deps): update docker/setup-qemu-action action to v4.3.0 (main) (#45594)
chore(deps): update docker/setup-qemu-action action to v4.3.0

| datasource  | package                  | from   | to     |
| ----------- | ------------------------ | ------ | ------ |
| github-tags | docker/setup-qemu-action | v4.2.0 | v4.3.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-09-01 11:17:26 +00:00
renovate[bot] 51d19b8349 chore(deps): update dependency astral-sh/uv to v0.12.8 (main) (#45580)
chore(deps): update dependency astral-sh/uv to v0.12.8

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

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-31 23:28:24 +00:00
renovate[bot] 7c351d208e chore(deps): update zizmor (main) (#45558)
chore(deps): update zizmor

| datasource  | package                   | from   | to     |
| ----------- | ------------------------- | ------ | ------ |
| docker      | ghcr.io/zizmorcore/zizmor | 1.29.0 | 1.30.0 |
| github-tags | zizmorcore/zizmor-action  | v0.6.2 | v0.6.3 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-30 22:29:28 +00:00
renovate[bot] 2b56b52933 chore(deps): update pnpm/setup action to v2.1.0 (main) (#45543)
chore(deps): update pnpm/setup action to v2.1.0

| datasource  | package    | from   | to     |
| ----------- | ---------- | ------ | ------ |
| github-tags | pnpm/setup | v2.0.2 | v2.1.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-29 00:28:18 +00:00
renovate[bot] 90df877c9c chore(deps): update dependency astral-sh/uv to v0.12.7 (main) (#45519)
chore(deps): update dependency astral-sh/uv to v0.12.7

| datasource      | package      | from   | to     |
| --------------- | ------------ | ------ | ------ |
| github-releases | astral-sh/uv | 0.12.6 | 0.12.7 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-27 22:36:59 +00:00
renovate[bot] 24556562d6 chore(deps): update github/codeql-action action to v4.37.9 (main) (#45484)
chore(deps): update github/codeql-action action to v4.37.9

| datasource  | package              | from    | to      |
| ----------- | -------------------- | ------- | ------- |
| github-tags | github/codeql-action | v4.37.8 | v4.37.9 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-27 09:46:10 +00:00
renovate[bot] f35acdd781 chore(deps): update dependency astral-sh/uv to v0.12.6 (main) (#45464)
chore(deps): update dependency astral-sh/uv to v0.12.6

| datasource      | package      | from   | to     |
| --------------- | ------------ | ------ | ------ |
| github-releases | astral-sh/uv | 0.12.5 | 0.12.6 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-25 20:20:34 +00:00
renovate[bot] 577ffcec28 chore(deps): update jdx/mise-action action to v4.3.0 (main) (#45442)
chore(deps): update jdx/mise-action action to v4.3.0

| datasource  | package         | from   | to     |
| ----------- | --------------- | ------ | ------ |
| github-tags | jdx/mise-action | v4.2.5 | v4.3.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-25 11:41:47 +00:00
renovate[bot] b7f19dc9a9 chore(deps): update github/codeql-action action to v4.37.8 (main) (#45386)
chore(deps): update github/codeql-action action to v4.37.8

| datasource  | package              | from    | to      |
| ----------- | -------------------- | ------- | ------- |
| github-tags | github/codeql-action | v4.37.7 | v4.37.8 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-21 13:37:06 +00:00
Jamie Tanna 216b3d8568 test: set up mutation testing with Stryker
While as a project, **??**

This can give us a slight sense of **??**, and find **??**.

Instead, we can use Stryker's mutation testing to **??**.

This isn't currently enforced in CI, but is used as a **??**.

Co-authored-by: Claude Opus 4.6 <jamie.tanna+github-copilot@mend.io>
Co-authored-by: Claude Sonnet 5 <jamie.tanna+claude-code@mend.io>
2026-08-19 15:01:02 +01:00
Jamie Tanna 34c7bcb7a5 ci: never restore caches into the release job
When running the Release job, we restore our `node_modules` cache via
`setup-node`. This leads to `semantic-release` executing - with
`contents: write`, `packages: write`, `id-token: write` and Docker Hub
credentials - the release process.

If we were to have a poisoned cache, this could lead to backdoored npm
packages and Docker images.

Although not currently exploitable, we should further harden this by:

- never using the cache for `release` jobs
- requiring a full `pnpm install --frozen-lockfile` on release jobs
- increasing the build time slightly on release jobs

This ensures that we don't leave ourselves vulnerable to cache poisoning
in the future.

It appears that zizmor's `cache-poisoning` audit covers this pattern,
but doesn't recognise a branch-push `semantic-release` job as a release
workflow, so won't flag regressions here.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna a00fef3069 ci: ensure lint-actions lints composite actions
As per the previous commit, we currently don't lint our composite
actions, but should do.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna da7dc8b895 ci: add missing description to setup-docker action
To handle an ActionLint finding against the repository.

This isn't caught because `lint-actions` is a sparse checkout, which
doesn't include the in-repo Actions themselves, which is fixed in a
follow-up commit.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna 2d566bfe0b ci(ws_scan): pass Mend API key via WS_APIKEY environment variable
The Unified Agent scan passes `secrets.WS_ORG_TOKEN` as a `-apiKey`
CLI argument. Actions masks it in logs, but command-line arguments
are visible in the runner's process table to anything else running on
the machine.

As the Unified Agent reads any configuration parameter from a
`WS_`-prefixed environment variable, we can supply `WS_APIKEY` via
`env:` and drop the argument.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna 0bc5849acd ci(mend-slack): pass discussion timestamp to script via env
To avoid potentially expanding a `discussion.created_at` event, we can
make sure we don't interpolate it, by injecting it in via `env`.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna a0ad2d0d15 ci: pass secrets and inputs to release scripts via env
To reduce risk of template injection, we can pass secrets and inputs as
an `env` input, which avoids shell expansion and hardens our usage.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna 267c7fff95 ci: ensure that linting leads to test-success failure
To make sure that we cover these steps explicitly, we can add a check
for them in `test-success`.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna eeaa20fe2c ci: evaluate codecov fail_ci_if_error as an expression
As we're missing the `${{ }}`, we're passing in the literal string
`github.event_name ...` to `fail_ci_if_error` which may not evaluate as
expected.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna 27875b6bf7 ci: don't gate build-docs on lint-docs
So we can run them both in parallel, speeding up the overall run time.

This may lead to a case where we run `build-docs` in the case a linting
failure is hit, but it also allows running them both in parallel which
could save ~1m of wasted waiting time.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna 97c10ffcc9 ci: add restore-keys fallback for tsbuildinfo cache
Like the vitest cache, the tsbuildinfo cache in `lint-other` can only
restore entries whose key contains the current
`hashFiles('pnpm-lock.yaml')` — its existing `restore-keys` prefix
still embeds the hash — so every lockfile change makes `type-check`
run a full, rather than incremental, `tsc`.

We can add a bare `tsbuildinfo-` fallback after the existing
same-hash prefix, restoring the newest cache from before the lockfile
bump. tsc records the version of every input file in the buildinfo
and recompiles whatever changed, so a stale restore is safe.

We intentionally leave the similarly-shaped prettier cache without a
cross-hash fallback: prettier can't detect plugin changes, so the
lockfile hash in its key is the only thing invalidating its cache
when a plugin updates — a cross-hash restore could wrongly skip
reformatting files.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna a265d4a56e ci: add restore-keys fallback for vitest cache
The vitest cache key in `test` embeds `hashFiles('pnpm-lock.yaml')`
and has no `restore-keys`, so every lockfile change starts each test
shard fully cold, re-transforming the whole codebase. As Renovate
updates its own lockfile near-daily, this is the common case rather
than the exception.

Because `restore-keys` performs prefix matching, it can only wildcard
the end of a key, so we first reorder the key to put
`matrix.cache-key` before the lockfile hash. The fallback then means
"same shard, any lockfile". vitest validates restored entries itself
(transforms are keyed by content hash), so a stale restore degrades
to a rebuild, never a wrong result.

Due to the reorder, the first run after this change won't match any
existing cache entry, so will start cold once.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna 6a7683b750 ci: correctly generate prefetch matrix cache key
As `setup-node` currently uses a hash based on
`hashFiles('pnpm-lock.yaml', 'package.json')`, but we weren't doing the
same here, we would always have a cache miss, and we would need to run
the macOS prefetch, regardless of whether the cache was warm or cold.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna 4dae13669d ci: don't gate lint-actions on setup-build
As `lint-actions` doesn't currently need any access to `pnpm` artifacts,
we can run this check earlier than needing to have `setup-build` (and a
cache hit or miss).

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
Jamie Tanna d1073f0bc8 ci: remove duplicated markdown-lint step from lint-docs
As we run the command earlier in the job, too.

Co-authored-by: Claude Fable 5 <jamie.tanna+claude-code@mend.io>
2026-08-18 11:04:13 +01:00
renovate[bot] fb225aa09f chore(deps): update dependency astral-sh/uv to v0.12.5 (main) (#45288)
chore(deps): update dependency astral-sh/uv to v0.12.5

| datasource      | package      | from   | to     |
| --------------- | ------------ | ------ | ------ |
| github-releases | astral-sh/uv | 0.12.4 | 0.12.5 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-14 20:26:56 +00:00
renovate[bot] 7e82bd7e13 chore(deps): update dependency astral-sh/uv to v0.12.4 (main) (#45275)
chore(deps): update dependency astral-sh/uv to v0.12.4

| datasource      | package      | from   | to     |
| --------------- | ------------ | ------ | ------ |
| github-releases | astral-sh/uv | 0.12.3 | 0.12.4 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-14 06:12:12 +00:00
Jamie Tanna eba4b3eed4 ci: auto-label PRs that have been dequeued from the Merge Queue (#45270)
As a way to get better visibility for - predominantly - transient issues
GitHub are having, via [0] we can auto-label PRs, so they can then be
picked up by a maintainer.

We can use the `-slim` runners, as this doesn't need much compute, and
it reduces ours and GitHub's costs.

[0]: https://www.jvt.me/posts/2026/08/11/github-merge-queue-prs/

Co-authored-by: Sonnet 5 <claude-code@jamietanna.co.uk>
2026-08-14 05:05:42 +00:00
renovate[bot] 1d2e37d91d chore(deps): update github/codeql-action action to v4.37.7 (main) (#45264)
chore(deps): update github/codeql-action action to v4.37.7

| datasource  | package              | from    | to      |
| ----------- | -------------------- | ------- | ------- |
| github-tags | github/codeql-action | v4.37.6 | v4.37.7 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-13 13:59:07 +00:00
renovate[bot] c3c0226281 chore(deps): update jdx/mise-action action to v4.2.5 (main) (#45262)
chore(deps): update jdx/mise-action action to v4.2.5

| datasource  | package         | from   | to     |
| ----------- | --------------- | ------ | ------ |
| github-tags | jdx/mise-action | v4.2.4 | v4.2.5 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-13 11:34:59 +00:00
Michael Kriese 6d4a5d38a0 ci(workflows): switch select workflows to ubuntu-slim runner (#45247)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-12 14:02:07 +00:00
renovate[bot] 30cd3d8b8c chore(deps): update pnpm/setup action to v2.0.2 (main) (#45178)
chore(deps): update pnpm/setup action to v2.0.2

| datasource  | package    | from   | to     |
| ----------- | ---------- | ------ | ------ |
| github-tags | pnpm/setup | v2.0.1 | v2.0.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-08-09 23:25:51 +00:00