Skip to content

Commit eeed8b7

Browse files
committed
chore(deps): batch 14 bumps and make Dependabot grouping catch-all
The third ~20-PR wave in one morning. Root cause is the grouping config, not Dependabot: `groups` was an allowlist of ~11 named families, so every package outside it arrived as its own PR. This wave was 14 PRs for 14 ungrouped packages — four separate @opentelemetry/* ones, `knip` once per app, plus react-i18next, wrangler, tsx, @vitejs/plugin-react, @types/node, lint-staged, fs-extra and @changesets/cli. apps/docs, github-actions, all three docker blocks and terraform had no groups whatsoever. Replaces the named groups with catch-all `patterns: ["*"]` groups split by dependency-type across all eight ecosystems, so a week lands at most two PRs per app (runtime deps separate from tooling) instead of ~20, and the config needs no upkeep as dependencies are added. Majors stay ignored exactly as before. knip 6.32.0 tightened unused-re-export detection and caught a true positive: apps/ui's api/client.ts re-exported `paths` and `components` from ./schema, but `paths` is imported straight from "./schema" at its one use site and `components` is unused entirely. Narrowed the barrel to `operations`, which is the only one consumed through it.
1 parent 9aa9a1e commit eeed8b7

8 files changed

Lines changed: 349 additions & 404 deletions

File tree

.github/dependabot.yml

Lines changed: 51 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,20 @@ updates:
1414
include: scope
1515
cooldown:
1616
default-days: 7
17+
# Catch-all grouping. The previous per-family groups (elysia, drizzle,
18+
# bullmq, email, lint, observability, ai, …) were an allowlist: anything
19+
# not named fell through as its own PR, so a normal week produced ~20
20+
# single-package PRs (four separate @opentelemetry/* ones, `knip` once per
21+
# app, and so on) and the named list needed extending for every new dep.
22+
# Matching "*" by dependency-type caps this at two PRs per app — runtime
23+
# deps kept separate from tooling so review risk stays distinguishable.
1724
groups:
18-
elysia:
19-
patterns: ["elysia", "@elysiajs/*"]
20-
drizzle:
21-
patterns: ["drizzle-orm", "drizzle-kit"]
22-
typebox:
23-
patterns: ["@sinclair/typebox"]
24-
bullmq:
25-
patterns: ["bullmq", "ioredis"]
26-
stripe:
27-
patterns: ["stripe"]
28-
email:
29-
patterns:
30-
- "resend"
31-
- "@sendgrid/mail"
32-
- "nodemailer"
33-
- "@types/nodemailer"
34-
- "handlebars"
35-
lint:
36-
patterns: ["eslint", "eslint-*", "@eslint/*", "typescript-eslint", "prettier"]
37-
observability:
38-
patterns: ["@sentry/*", "pino", "pino-pretty"]
39-
ai:
40-
patterns: ["@anthropic-ai/sdk", "openai"]
25+
production-dependencies:
26+
dependency-type: "production"
27+
patterns: ["*"]
28+
development-dependencies:
29+
dependency-type: "development"
30+
patterns: ["*"]
4131
ignore:
4232
- dependency-name: "elysia"
4333
update-types: ["version-update:semver-major"]
@@ -75,37 +65,19 @@ updates:
7565
include: scope
7666
cooldown:
7767
default-days: 7
68+
# Catch-all grouping — see the rationale on the apps/api block above.
69+
# Note this keeps React's own pins together: react, react-dom and
70+
# react-router-dom are production, while @types/react and
71+
# @types/react-dom are development, so they land in sibling PRs. The
72+
# `overrides` entries mirroring them still have to move in lockstep;
73+
# the package-override-parity lint-meta rule catches it if they drift.
7874
groups:
79-
react:
80-
patterns:
81-
- "react"
82-
- "react-dom"
83-
- "@types/react"
84-
- "@types/react-dom"
85-
- "react-router-dom"
86-
tanstack:
87-
patterns: ["@tanstack/*"]
88-
testing:
89-
patterns: ["vitest", "@vitest/*", "@testing-library/*", "jsdom", "@playwright/test"]
90-
storybook:
91-
patterns: ["storybook", "@storybook/*"]
92-
tailwind-shadcn:
93-
patterns:
94-
- "tailwindcss"
95-
- "@tailwindcss/*"
96-
- "prettier-plugin-tailwindcss"
97-
- "class-variance-authority"
98-
- "tailwind-merge"
99-
- "clsx"
100-
- "radix-ui"
101-
- "@radix-ui/*"
102-
- "lucide-react"
103-
- "sonner"
104-
- "next-themes"
105-
lint:
106-
patterns: ["eslint", "eslint-*", "@eslint/*", "typescript-eslint", "prettier", "@trivago/*"]
107-
observability:
108-
patterns: ["@sentry/*", "size-limit", "@size-limit/*", "@lhci/*"]
75+
production-dependencies:
76+
dependency-type: "production"
77+
patterns: ["*"]
78+
development-dependencies:
79+
dependency-type: "development"
80+
patterns: ["*"]
10981
ignore:
11082
- dependency-name: "react"
11183
update-types: ["version-update:semver-major"]
@@ -134,6 +106,15 @@ updates:
134106
include: scope
135107
cooldown:
136108
default-days: 7
109+
# This block had no groups at all, so every docs dep (astro, starlight,
110+
# wrangler, ws, mermaid …) arrived as its own PR.
111+
groups:
112+
production-dependencies:
113+
dependency-type: "production"
114+
patterns: ["*"]
115+
development-dependencies:
116+
dependency-type: "development"
117+
patterns: ["*"]
137118
ignore:
138119
# @astrojs/cloudflare 13.x requires Astro 6 (uses astro/app/manifest
139120
# which is not exported by Astro 5). Stay on 12.x until we bump Astro.
@@ -151,6 +132,11 @@ updates:
151132
labels: ["dependencies", "ci"]
152133
commit-message:
153134
prefix: "chore(ci)"
135+
# One PR for all action bumps. dependency-type doesn't apply to this
136+
# ecosystem, so a single "*" group is the equivalent.
137+
groups:
138+
github-actions:
139+
patterns: ["*"]
154140
ignore:
155141
# changesets/action 2.x requires Changesets CLI v3 and validates it at
156142
# runtime, directing CLI v2 users back to @v1. apps/ui is on
@@ -172,6 +158,9 @@ updates:
172158
labels: ["dependencies", "docker"]
173159
commit-message:
174160
prefix: "chore(docker)"
161+
groups:
162+
docker-images:
163+
patterns: ["*"]
175164
ignore:
176165
- dependency-name: "oven/bun"
177166
update-types: ["version-update:semver-major"]
@@ -187,6 +176,9 @@ updates:
187176
labels: ["dependencies", "docker"]
188177
commit-message:
189178
prefix: "chore(docker)"
179+
groups:
180+
docker-images:
181+
patterns: ["*"]
190182
ignore:
191183
- dependency-name: "oven/bun"
192184
update-types: ["version-update:semver-major"]
@@ -204,6 +196,9 @@ updates:
204196
labels: ["dependencies", "docker"]
205197
commit-message:
206198
prefix: "chore(docker)"
199+
groups:
200+
docker-images:
201+
patterns: ["*"]
207202
ignore:
208203
- dependency-name: "postgres"
209204
update-types: ["version-update:semver-major"]
@@ -223,3 +218,6 @@ updates:
223218
labels: ["dependencies", "terraform"]
224219
commit-message:
225220
prefix: "chore(tofu)"
221+
groups:
222+
terraform-providers:
223+
patterns: ["*"]

0 commit comments

Comments
 (0)