Skip to content

Commit d74844e

Browse files
author
Test
committed
fix(deps): restore trustworthy dependency automation
1 parent 42d5427 commit d74844e

12 files changed

Lines changed: 81 additions & 72 deletions

File tree

.changeset/solid-ends-decide.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
---
3+
4+
No release note: this updates dependency automation and its generated client output without changing operator- or user-facing behavior.

.github/workflows/reusable-docker-build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ jobs:
280280

281281
- name: Install cosign
282282
if: inputs.single-arch
283-
uses: sigstore/cosign-installer@7e8b541eb2e61bf99390e1afd4be13a184e9ebc5 # v3.10.1
283+
uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
284284

285285
- name: Sign and verify image
286286
if: inputs.single-arch
@@ -413,7 +413,7 @@ jobs:
413413
push-to-registry: true
414414

415415
- name: Install cosign
416-
uses: sigstore/cosign-installer@7e8b541eb2e61bf99390e1afd4be13a184e9ebc5 # v3.10.1
416+
uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
417417

418418
# --recursive: sign each child manifest so per-platform verify works.
419419
- name: Sign image with cosign

SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ Out of scope:
4646

4747
Independent of this reporting channel, the project runs:
4848

49-
- **Dependency updates**: [Renovate](https://docs.renovatebot.com/) (Mend-hosted) with vulnerability alerts prioritized and auto-merged ([`renovate.json`](renovate.json))
49+
- **Dependency updates**: [Renovate](https://docs.renovatebot.com/) proposes vulnerability fixes without dashboard approval or a minimum release age ([`renovate.json`](renovate.json))
5050
- **Dependency & secret scanning in CI**: Trivy filesystem scan and TruffleHog ([`ci-security-scan.yml`](.github/workflows/ci-security-scan.yml))
5151
- **Static analysis**: GitHub CodeQL
5252
- **Native alerts**: GitHub secret scanning and Dependabot dependency alerts

bun.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/contributor/release-management.mdx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,11 @@ Check the current release: `git describe --tags --abbrev=0` or
151151

152152
## Dependency management
153153

154-
Dependencies are managed through the
155-
[Renovate Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/). Approved
156-
updates are scheduled after the configured release-age checks; vulnerability alerts may run and merge
157-
independently. Bot PRs are exempt from the changeset check — when a dependency bump is user-facing,
158-
a maintainer adds the changeset.
154+
Routine dependency updates require approval through the
155+
[Renovate Dependency Dashboard](https://docs.renovatebot.com/key-concepts/dashboard/) and observe
156+
the configured schedule and release age. Vulnerability-fix pull requests bypass those controls but
157+
still require review. Bot PRs are exempt from the changeset check — when a dependency bump is
158+
user-facing, a maintainer adds the changeset.
159159

160160
Exact pins remain exact during Renovate updates. Formatter upgrades must include and separately review
161161
any resulting mechanical formatting changes.

renovate.json

Lines changed: 44 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{
22
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
3-
"description": "Renovate config - dashboard only, manual updates",
43
"extends": [
54
"config:best-practices",
65
":semanticCommitTypeAll(chore)",
@@ -11,9 +10,16 @@
1110
"timezone": "Europe/Berlin",
1211
"schedule": ["before 7am on monday"],
1312
"minimumReleaseAge": "3 days",
14-
"platformAutomerge": true,
15-
"automergeStrategy": "squash",
1613
"semanticCommitScope": "deps",
14+
"enabledManagers": [
15+
"bun",
16+
"maven",
17+
"maven-wrapper",
18+
"dockerfile",
19+
"docker-compose",
20+
"github-actions",
21+
"custom.regex"
22+
],
1723
"dependencyDashboard": true,
1824
"dependencyDashboardTitle": "Dependency Dashboard",
1925
"lockFileMaintenance": {
@@ -23,32 +29,53 @@
2329
"rangeStrategy": "replace",
2430
"packageRules": [
2531
{
26-
"description": "Group Java/Spring",
2732
"matchManagers": ["maven"],
28-
"groupName": "Java dependencies",
33+
"matchDepTypes": ["compile", "runtime", "provided", "optional", "parent", "parent-root"],
34+
"matchUpdateTypes": ["minor", "patch", "digest", "pin", "pinDigest"],
35+
"groupName": "Java runtime and framework dependencies",
36+
"labels": ["dependencies", "java"]
37+
},
38+
{
39+
"matchManagers": ["maven"],
40+
"matchDepTypes": ["build", "test"],
41+
"matchUpdateTypes": ["minor", "patch", "digest", "pin", "pinDigest"],
42+
"groupName": "Java developer tooling",
2943
"labels": ["dependencies", "java"]
3044
},
3145
{
32-
"description": "Group webapp non-major updates",
3346
"matchFileNames": ["webapp/package.json"],
47+
"matchDepTypes": ["dependencies"],
48+
"matchUpdateTypes": ["minor", "patch"],
49+
"groupName": "Webapp runtime dependencies",
50+
"labels": ["dependencies", "webapp"]
51+
},
52+
{
53+
"matchFileNames": ["webapp/package.json"],
54+
"matchDepTypes": ["devDependencies"],
3455
"matchUpdateTypes": ["minor", "patch"],
35-
"groupName": "Webapp dependencies",
56+
"groupName": "Webapp developer tooling",
3657
"labels": ["dependencies", "webapp"]
3758
},
3859
{
39-
"description": "Group documentation deps",
4060
"matchFileNames": ["docs/package.json"],
41-
"groupName": "Documentation dependencies",
61+
"matchDepTypes": ["dependencies"],
62+
"matchUpdateTypes": ["minor", "patch"],
63+
"groupName": "Documentation runtime dependencies",
64+
"labels": ["dependencies", "docs"]
65+
},
66+
{
67+
"matchFileNames": ["docs/package.json"],
68+
"matchDepTypes": ["devDependencies"],
69+
"matchUpdateTypes": ["minor", "patch"],
70+
"groupName": "Documentation developer tooling",
4271
"labels": ["dependencies", "docs"]
4372
},
4473
{
45-
"description": "Major updates",
4674
"matchUpdateTypes": ["major"],
4775
"minimumReleaseAge": "7 days",
4876
"labels": ["dependencies", "breaking"]
4977
},
5078
{
51-
"description": "Core frameworks",
5279
"matchPackageNames": [
5380
"typescript",
5481
"react",
@@ -60,38 +87,23 @@
6087
"groupName": "Core frameworks"
6188
},
6289
{
63-
"description": "GitHub Actions",
6490
"matchManagers": ["github-actions"],
91+
"matchUpdateTypes": ["minor", "patch", "digest", "pin", "pinDigest"],
6592
"groupName": "GitHub Actions",
6693
"labels": ["dependencies", "ci"]
6794
},
6895
{
69-
"description": "Docker images",
7096
"matchManagers": ["dockerfile", "docker-compose"],
71-
"groupName": "Docker images",
72-
"pinDigests": true,
7397
"labels": ["dependencies", "infrastructure"]
7498
},
7599
{
76-
"description": "Release runtime images",
77-
"matchPackageNames": [
78-
"docker.io/library/alpine",
79-
"docker.io/library/nats",
80-
"docker.io/library/nginx",
81-
"docker.io/library/traefik",
82-
"alpine",
83-
"nats",
84-
"nginx",
85-
"traefik"
86-
],
87-
"groupName": "Release runtime images",
88-
"automerge": false,
89-
"labels": ["dependencies", "infrastructure", "security"]
100+
"matchUpdateTypes": ["major"],
101+
"groupName": null
90102
}
91103
],
92104
"customManagers": [
93105
{
94-
"description": "Track ARG <PKG>_VERSION pins in Dockerfiles via a `# renovate:` magic comment, so Renovate handles bumps for tools installed inside the image (e.g. agent-pi's @earendil-works/pi-coding-agent).",
106+
"description": "Track Dockerfile ARG version pins",
95107
"customType": "regex",
96108
"managerFilePatterns": ["/(^|/)Dockerfile$/"],
97109
"matchStrings": [
@@ -110,7 +122,7 @@
110122
"versioningTemplate": "semver"
111123
},
112124
{
113-
"description": "Keep the release evidence inventory aligned with reviewed upstream image pins",
125+
"description": "Track release image tags and digests",
114126
"customType": "regex",
115127
"managerFilePatterns": ["/^security/release-images\\.json$/"],
116128
"matchStrings": [
@@ -120,8 +132,8 @@
120132
}
121133
],
122134
"vulnerabilityAlerts": {
135+
"enabled": true,
123136
"labels": ["security", "dependencies"],
124-
"schedule": ["at any time"],
125137
"minimumReleaseAge": null,
126138
"dependencyDashboardApproval": false,
127139
"automerge": false,

webapp/openapi-ts.config.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { defaultPlugins, defineConfig } from "@hey-api/openapi-ts";
1+
import { defineConfig } from "@hey-api/openapi-ts";
22

33
export default defineConfig({
44
input: "../server/openapi.yaml",
55
output: "src/api",
66
plugins: [
7-
...defaultPlugins,
7+
"@hey-api/typescript",
88
"@hey-api/client-fetch",
99
{
1010
name: "@tanstack/react-query",
@@ -15,16 +15,13 @@ export default defineConfig({
1515
bigInt: false,
1616
name: "@hey-api/transformers",
1717
},
18-
// The transformers plugin only *emits* `transformers.gen.ts`; the SDK ignores it unless asked.
19-
// Without this the generated types promise `Date` while the fetch client hands back the raw
20-
// ISO string, so anything typed against the client (`.toLocaleDateString()`) throws on the
21-
// first real response while every `new Date(…)` fixture stays green.
18+
// Apply generated date transformers so SDK values match their Date types.
2219
{
2320
name: "@hey-api/sdk",
2421
transformer: true,
2522
},
2623
],
27-
// Generated query hooks do not support SSE responses; Mentor uses use-mentor-chat.ts.
24+
// SSE operations use the streaming client rather than generated query hooks.
2825
parser: {
2926
filters: {
3027
operations: {

webapp/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
"devDependencies": {
7070
"@chromatic-com/storybook": "5.2.1",
7171
"@gitlab/svgs": "^3.160.0",
72-
"@hey-api/openapi-ts": "0.97.1",
72+
"@hey-api/openapi-ts": "0.97.3",
7373
"@oxlint/plugins": "1.79.0",
7474
"@playwright/test": "1.60.0",
7575
"@primer/primitives": "11.9.0",
@@ -86,6 +86,7 @@
8686
"@testing-library/dom": "10.4.1",
8787
"@testing-library/react": "16.3.2",
8888
"@testing-library/user-event": "14.6.1",
89+
"@types/hast": "3.0.5",
8990
"@types/node": "24.12.4",
9091
"@types/react": "19.2.14",
9192
"@types/react-dom": "19.2.3",
@@ -109,8 +110,7 @@
109110
"typescript7": "npm:typescript@7.0.2",
110111
"vite": "8.2.2",
111112
"vite-plugin-terminal": "1.4.0",
112-
"vitest": "4.1.11",
113-
"@types/hast": "3.0.5"
113+
"vitest": "4.1.11"
114114
},
115115
"msw": {
116116
"workerDirectory": [

webapp/src/api/client/client.gen.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,7 @@ export const createClient = (config: Config = {}): Client => {
4848
};
4949

5050
if (opts.security) {
51-
await setAuthParams({
52-
...opts,
53-
security: opts.security,
54-
});
51+
await setAuthParams(opts);
5552
}
5653

5754
if (opts.requestValidator) {

webapp/src/api/client/types.gen.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,12 +151,13 @@ type MethodFn = <
151151

152152
type SseFn = <
153153
TData = unknown,
154-
TError = unknown,
154+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
155+
_TError = unknown,
155156
ThrowOnError extends boolean = false,
156157
TResponseStyle extends ResponseStyle = 'fields',
157158
>(
158159
options: Omit<RequestOptions<never, TResponseStyle, ThrowOnError>, 'method'>,
159-
) => Promise<ServerSentEventsResult<TData, TError>>;
160+
) => Promise<ServerSentEventsResult<TData>>;
160161

161162
type RequestFn = <
162163
TData = unknown,

0 commit comments

Comments
 (0)