You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: clarify when changesets and server-changes files are needed
Reframe changesets and .server-changes notes as user-facing release notes
rather than a catalog of every change. The test is whether a user or
customer would care, not whether a public package or server app was touched.
Call out the skip cases: internal/admin-only changes, refactors, chores,
performance tuning with no user-visible effect, and public packages that are
not consumed independently.
Copy file name to clipboardExpand all lines: .claude/REVIEW.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -56,8 +56,8 @@ Every PR gets a performance pass — not just the ones that look perf-sensitive.
56
56
## Always check
57
57
58
58
-**Tests use testcontainers, not mocks.** Vitest with `redisTest` / `postgresTest` / `containerTest` from `@internal/testcontainers`. Any new `vi.mock(...)` on Redis, Postgres, BullMQ, or other infra is wrong here — 🔴 if added in production-path tests, 🟡 if isolated unit test.
59
-
-**Public-package changes have a changeset.**`pnpm run changeset:add` produces `.changeset/*.md`. Required for any edit under `packages/*`. Missing → 🟡; missing on a breaking change → 🔴.
60
-
-**Server-only changes have `.server-changes/*.md`.** Required for `apps/webapp/`, `apps/supervisor/` edits with no public-package change. Body should be 1-2 sentences (it has to fit as one bullet in a future changelog). Missing → 🟡.
59
+
-**User-facing public-package changes have a changeset.**`pnpm run changeset:add` produces `.changeset/*.md`. Changesets are user-facing release notes, not a catalog of every change: required when a `packages/*` change is something a user would notice or act on, skipped for internal-only changes, refactors, chores, and packages not consumed independently (e.g. `@trigger.dev/redis-worker`). Missing on a user-facing change → 🟡; missing on a breaking change → 🔴. Do not flag a missing note when the change is not user-facing.
60
+
-**User-facing server-only changes have `.server-changes/*.md`.** Required for `apps/webapp/`, `apps/supervisor/` edits with no public-package change when the change is user-facing; skip internal-only or admin-only changes, refactors, and chores. Body should be 1-2 sentences (it has to fit as one bullet in a future changelog). Missing on a user-facing change → 🟡.
61
61
-**Lua script naming.** Coexisting scripts use behavior-descriptive suffixes (`Tracked`), never `V2`. Old name must keep working until the next deploy clears it.
62
62
-**RunQueue payload shape.** V2 run-queue payload's `projectId` is consumed by `workerQueueResolver` for override matching. If a PR drops it from the payload, 🔴.
63
63
-**`safeSend` scope.** Defensive IPC wrappers belong on loop / interval / handler contexts, not one-shot terminal sends. If the PR adds `safeSend` to a single terminal call for consistency, 🟡 with a "remove this" suggestion.
Copy file name to clipboardExpand all lines: .claude/rules/server-apps.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ paths:
5
5
6
6
# Server App Changes
7
7
8
-
When modifying server apps (webapp, supervisor, etc.) with **no package changes**, add a `.server-changes/` file instead of a changeset:
8
+
`.server-changes/` files are user-facing release notes, not a catalog of every change. When a server app change (webapp, supervisor, etc.) with **no package changes** is user-facing (something a user would notice or act on), add a `.server-changes/` file instead of a changeset. Skip it for internal-only or admin-only changes, refactors, and chores:
- If the PR also touches `packages/`, just the changeset is sufficient (no `.server-changes/` needed).
23
+
- If the PR also touches `packages/` and the package change needs a changeset, that changeset covers it (no `.server-changes/` needed). If the package change is internal and needs no changeset, still add a `.server-changes/` file for the user-facing server change.
24
24
25
25
The body ships **verbatim in user-facing release notes**. Keep it to 1–2 short sentences, non-technical, written for a dashboard user: describe what changed for them, never the implementation (no header names, endpoints, middleware, storage mechanisms, internal tools). See `.server-changes/README.md` for full guidance.
Copy file name to clipboardExpand all lines: .server-changes/README.md
+5-3Lines changed: 5 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,11 +4,13 @@ This directory tracks changes to server-only components (webapp, supervisor, etc
4
4
5
5
## When to add a file
6
6
7
-
**Server-only PRs**: If your PR only changes `apps/webapp/`, `apps/supervisor/`, or other server components (and does NOT change anything in `packages/`), add a `.server-changes/` file.
7
+
These entries are **user-facing release notes**, not a catalog of every change. The test is "would a user or customer care about this change?", not "did I touch a server app?". Add one only when a server-only change is something a user would notice, act on, or want to hear about (a feature, a bug fix they could have hit, a behavior or performance change they would feel). Skip it for internal-only or admin-only changes, refactors, test-only changes, chores, and performance tuning with no user-visible effect. Anyone who wants the exact history reads the commits. When in doubt, ask a maintainer rather than adding a note by default.
8
8
9
-
**Mixed PRs** (both packages and server): Just add a changeset as usual. No `.server-changes/` file needed — the changeset covers it.
9
+
**Server-only PRs**: If your PR only changes `apps/webapp/`, `apps/supervisor/`, or other server components (and does NOT change anything in `packages/`) AND the change is user-facing, add a `.server-changes/` file.
10
10
11
-
**Package-only PRs**: Just add a changeset as usual.
11
+
**Mixed PRs** (both packages and server): the changeset covers it, so no `.server-changes/` file is needed. If the package change is internal and needs no changeset but the server change is user-facing, add a `.server-changes/` file for it.
12
+
13
+
**Package-only PRs**: Just add a changeset as usual, when the change is user-facing.
Copy file name to clipboardExpand all lines: AGENTS.md
+17-3Lines changed: 17 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -92,7 +92,21 @@ Dynamic imports add unnecessary overhead in hot paths and make code harder to an
92
92
93
93
## Changesets and Server Changes
94
94
95
-
When modifying any public package (`packages/*` or `integrations/*`), add a changeset:
95
+
Changesets and `.server-changes/` files are **user-facing release notes**. They ship verbatim into the changelog that customers read to decide what to upgrade for or pay attention to. They are not a catalog of every change: anyone who wants the exact history reads the commits. So the question is not "did I touch a public package or a server app?" but **"would a user or customer care about this change?"**
96
+
97
+
**Add one** when the change is something a user would notice, act on, or want to hear about: a new feature, a bug fix they could have hit, a behavior or performance change they would feel, a breaking change.
98
+
99
+
**Skip it** (no changeset, no `.server-changes/` file) when the change is not worth communicating to users, even if it touches a public package or a server app. For example:
100
+
101
+
- internal-only or admin-only changes, refactors, test-only changes, chores
102
+
- performance or query tuning with no user-visible behavior change
103
+
- changes to a public package that is not consumed independently (e.g. `@trigger.dev/redis-worker`), where a version bump means nothing to a user
104
+
105
+
When in doubt, ask a maintainer rather than adding a note by default. An unnecessary entry is noise in the changelog, not a safe default.
106
+
107
+
### How to add one
108
+
109
+
When a **public package** (`packages/*` or `integrations/*`) change is user-facing, add a changeset:
96
110
97
111
```bash
98
112
pnpm run changeset:add
@@ -102,9 +116,9 @@ pnpm run changeset:add
102
116
- Confirm with maintainers before selecting **minor** (new features)
103
117
-**Never** select major without explicit approval
104
118
105
-
When modifying only server components (`apps/webapp/`, `apps/supervisor/`, etc.) with no package changes, add a `.server-changes/` file instead. See `.server-changes/README.md` for format and documentation.
119
+
When a **server-only** change (`apps/webapp/`, `apps/supervisor/`, etc., with no package changes) is user-facing, add a `.server-changes/` file instead. See `.server-changes/README.md` for format and documentation.
106
120
107
-
**Write the description for users, not maintainers.** Both changesets and `.server-changes/` notes ship verbatim in user-visible release notes. Lead with what changed *for the user* - one plain sentence describing behavior, not implementation, and never naming internal tools or infra. The full writing guidance in `.server-changes/README.md` applies to changesets too.
121
+
**Write the description for users, not maintainers.** Both changesets and `.server-changes/` notes ship verbatim in user-visible release notes. Lead with what changed *for the user*: one plain sentence describing behavior, not implementation, and never naming internal tools or infra. The full writing guidance in `.server-changes/README.md` applies to changesets too.
Copy file name to clipboardExpand all lines: CHANGESETS.md
+9-5Lines changed: 9 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,11 +4,13 @@ Trigger.dev uses [changesets](https://github.com/changesets/changesets) to manag
4
4
5
5
## Adding a changeset (package changes)
6
6
7
+
Changesets and `.server-changes/` files are user-facing release notes, not a catalog of every change. Add one only when the change is something a user would notice or act on. Skip it for internal-only changes, refactors, chores, and packages that are not consumed independently (e.g. `@trigger.dev/redis-worker`). Anyone who wants the exact history reads the commits.
8
+
7
9
To add a changeset, use `pnpm run changeset:add` and follow the instructions [here](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md). Please only ever select one of our public packages when adding a changeset.
8
10
9
11
## Adding a server change (server-only changes)
10
12
11
-
If your PR only changes server components (`apps/webapp/`, `apps/supervisor/`, etc.) and does NOT change any published packages, add a `.server-changes/` file instead of a changeset:
13
+
If your PR only changes server components (`apps/webapp/`, `apps/supervisor/`, etc.), does NOT change any published packages, AND the change is user-facing, add a `.server-changes/` file instead of a changeset:
For **mixed PRs** (both packages and server): just add a changeset. No `.server-changes/` file needed.
29
+
For **mixed PRs** (both packages and server): the changeset covers it, so no `.server-changes/` file is needed. If the package change is internal and needs no changeset but the server change is user-facing, add a `.server-changes/` file for it.
28
30
29
31
See `.server-changes/README.md` for full documentation.
30
32
31
33
## When to add which
32
34
35
+
Only for user-facing changes. Skip the note entirely for internal-only or admin-only changes, refactors, and chores.
36
+
33
37
| PR changes | What to add |
34
38
|---|---|
35
-
| Only packages (`packages/`) | Changeset (`pnpm run changeset:add`) |
36
-
| Only server (`apps/`) |`.server-changes/` file |
37
-
| Both packages and server |Just the changeset |
39
+
| Only packages (`packages/`) | Changeset (`pnpm run changeset:add`), if the package change is user-facing|
40
+
| Only server (`apps/`) |`.server-changes/` file, if the server change is user-facing|
41
+
| Both packages and server |The changeset covers it; if the package change needs no changeset but the server change is user-facing, add a `.server-changes/` file|
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -247,7 +247,7 @@ If your change touches core infrastructure, modifies widely-used code paths, or
247
247
248
248
We use [changesets](https://github.com/changesets/changesets) to manage our package versions and changelogs. If you've never used changesets before, first read [their guide here](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md).
249
249
250
-
If you are contributing a change to any packages in this monorepo (anything in either the `/packages` or `/integrations`directories), then you will need to add a changeset to your Pull Requests before they can be merged.
250
+
Changesets are user-facing release notes, not a catalog of every change. If you are contributing a **user-facing**change to a package in this monorepo (anything in `/packages` or `/integrations`that a user would notice or act on), add a changeset to your Pull Request before it can be merged. Skip the changeset for internal-only changes, refactors, chores, and packages that are not consumed independently (e.g. `@trigger.dev/redis-worker`), where a version bump means nothing to a user.
251
251
252
252
To add a changeset, run the following command in the root of the repo
253
253
@@ -265,7 +265,7 @@ Most of the time the changes you'll make are likely to be categorized as patch r
265
265
266
266
## Adding server changes
267
267
268
-
Changesets only track published npm packages. If your PR only changes server components (`apps/webapp/`, `apps/supervisor/`, etc.) with no package changes, add a `.server-changes/` file so the change appears in release notes.
268
+
Changesets only track published npm packages. If your PR only changes server components (`apps/webapp/`, `apps/supervisor/`, etc.) with no package changes AND the change is user-facing, add a `.server-changes/` file so the change appears in release notes. Skip it for internal-only or admin-only changes, refactors, and chores.
269
269
270
270
Create a markdown file with a descriptive name:
271
271
@@ -286,13 +286,13 @@ EOF
286
286
287
287
The body text (below the frontmatter) is a one-line description of the change. Keep it concise — it will appear in release notes.
288
288
289
-
**When to add which:**
289
+
**When to add which** (only for user-facing changes; skip the note entirely for internal-only or admin-only changes, refactors, and chores):
290
290
291
291
| PR changes | What to add |
292
292
|---|---|
293
-
| Only packages (`packages/`) | Changeset |
294
-
| Only server (`apps/`) |`.server-changes/` file |
295
-
| Both packages and server |Just the changeset |
293
+
| Only packages (`packages/`) | Changeset (if the package change is user-facing) |
294
+
| Only server (`apps/`) |`.server-changes/` file (if the server change is user-facing) |
295
+
| Both packages and server |The changeset covers it; if the package change needs no changeset but the server change is user-facing, add a `.server-changes/` file|
0 commit comments