Skip to content

Commit aefb59c

Browse files
build(deps): replace pnpm with Bun
1 parent 44b3e32 commit aefb59c

88 files changed

Lines changed: 6177 additions & 24213 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/fix-ci/SKILL.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ disable-model-invocation: true
77
allowed-tools:
88
- Bash(gh *)
99
- Bash(git *)
10-
- Bash(pnpm *)
10+
- Bash(bun *)
1111
- Bash(./mvnw *)
1212
- Read
1313
- Grep
@@ -62,17 +62,17 @@ Each leg's annotation names its own command; this table is only what the annotat
6262

6363
| Failure | What it actually means |
6464
|---|---|
65-
| `routeTree.gen.ts is stale` | Only a Vite build writes it. `cd webapp && pnpm run build`, then commit the file. |
66-
| `README images are stale` | The storybook job runs `export:readme-assets` *after* `test:storybook`, so the job goes red having printed a clean pass line. Run `pnpm --filter webapp run export:readme-assets` and commit `docs/images/readme`. |
65+
| `routeTree.gen.ts is stale` | Only a Vite build writes it. `cd webapp && bun run build`, then commit the file. |
66+
| `README images are stale` | The storybook job runs `export:readme-assets` *after* `test:storybook`, so the job goes red having printed a clean pass line. Run `bun run --filter webapp export:readme-assets` and commit `docs/images/readme`. |
6767
| Migrations gate | A changelog that reached `main` was edited, renamed or deleted, or a `master.xml` `<include>` was not appended at the end. Fix forward with a new changeset; never edit the released file. |
6868
| `verify-changesets` | The PR touches shipped code with no `.changeset/*.md`. `/land-pr` step 9 has the rules. |
6969
| App Server leg red on a docs-only PR | Expected, not a misconfiguration: `docs/**` is inside the `application-server` paths filter, because `docs:lint` and `check:diagrams` run on that leg. |
7070

7171
## 4. Reproduce locally before pushing
7272

7373
```bash
74-
pnpm run format
75-
pnpm run check
74+
bun run format
75+
bun run check
7676
```
7777

7878
`check` runs every leg CI runs except those needing Docker or a live credential — `docs:lint`

.agents/skills/land-pr/SKILL.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ disable-model-invocation: true
77
allowed-tools:
88
- Bash(gh *)
99
- Bash(git *)
10-
- Bash(pnpm *)
10+
- Bash(bun *)
1111
- Bash(./mvnw *)
1212
- Read
1313
- Grep
@@ -42,8 +42,8 @@ than guessing, and note the two shapes that surprise people:
4242
## 3. Format, then check
4343

4444
```bash
45-
pnpm run format
46-
pnpm run check
45+
bun run format
46+
bun run check
4747
```
4848

4949
`check` is the complete local quality gate — every leg is listed under `check` in the root
@@ -57,9 +57,9 @@ Generated artefacts are never hand-edited, and regeneration is destructive — i
5757
directory first, so stash local edits.
5858

5959
```bash
60-
pnpm run generate:api # controllers or DTOs changed: rewrites openapi.yaml AND webapp/src/api
61-
pnpm run db:draft-changelog # entities changed (needs Docker); then prune the diff to real deltas
62-
pnpm run db:generate-erd-docs # after any changelog change
60+
bun run generate:api # controllers or DTOs changed: rewrites openapi.yaml AND webapp/src/api
61+
bun run db:draft-changelog # entities changed (needs Docker); then prune the diff to real deltas
62+
bun run db:generate-erd-docs # after any changelog change
6363
```
6464

6565
`generate:api:application-server:specs` **exits 0 having written nothing** when a port it needs is
@@ -69,7 +69,7 @@ busy — HTTP, management, or the JMX port it defaults to. Pass free ports; the
6969
## 5. Run the tests your diff can break
7070

7171
```bash
72-
pnpm run test:webapp
72+
bun run test:webapp
7373
cd server && ./mvnw -pl application -am test -Dsurefire.includedGroups=unit -T 2C --batch-mode -q
7474
```
7575

@@ -85,11 +85,11 @@ A PR touching `server/`, `webapp/` or `docker/` needs a `.changeset/*.md` or `ve
8585
fails it.
8686

8787
```bash
88-
pnpm changeset # user-facing: pick the bump, write the summary in the operator's voice
89-
pnpm changeset --empty # no user-facing effect; say why in the body
88+
bun changeset # user-facing: pick the bump, write the summary in the operator's voice
89+
bun changeset --empty # no user-facing effect; say why in the body
9090
```
9191

92-
`pnpm changeset` is interactive — with no TTY, hand-write `.changeset/<slug>.md` (`.changeset/README.md`
92+
`bun changeset` is interactive — with no TTY, hand-write `.changeset/<slug>.md` (`.changeset/README.md`
9393
has the shape). The summary lands in `CHANGELOG.md` verbatim, so it names what an operator or user can
9494
now do, not a class or a file. **Pre-1.0, never pick `major`** — it would cut 1.0.0 and the gate
9595
rejects it; a breaking change rides in `minor` with `**Operators:** …` in the summary and a

.changeset/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ the version bump. (Not a Liquibase `<changeSet>` — a schema change needs both.
66
Every PR that changes shipped code (anything under `server/`, `webapp/`, or `docker/` except tests and in-tree docs) ships one; CI (`verify-changesets`) enforces it.
77

88
```bash
9-
pnpm changeset # write one (pick the bump, describe the change)
10-
pnpm changeset --empty # no user-facing effect — then write why in the file body (non-interactive)
9+
bun changeset # write one (pick the bump, describe the change)
10+
bun changeset --empty # no user-facing effect — then write why in the file body (non-interactive)
1111
```
1212

1313
The summary lands in the changelog **verbatim**, in the operator/user's voice — lead with what they can now
1414
do, or the symptom a fix removes. No class/hook/file names. No agent-attribution trailers. One changeset per
1515
user-visible change; unsure whether it's visible? Add one — a reviewer can delete it, a missing note can't.
1616

17-
No TTY (agents, CI)? `pnpm changeset` is interactive — instead write `.changeset/<slug>.md` by hand in the
17+
No TTY (agents, CI)? `bun changeset` is interactive — instead write `.changeset/<slug>.md` by hand in the
1818
format shown below. That is the one sanctioned hand-write; never touch `CHANGELOG.md` directly.
1919

2020
**Bump = the operator's upgrade cost:**
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
---
3+
4+
This package-management migration changes contributor and build infrastructure only; released
5+
application behavior and operator configuration are unchanged.

.claude/skills/fix-ci/SKILL.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ disable-model-invocation: true
77
allowed-tools:
88
- Bash(gh *)
99
- Bash(git *)
10-
- Bash(pnpm *)
10+
- Bash(bun *)
1111
- Bash(./mvnw *)
1212
- Read
1313
- Grep
@@ -62,17 +62,17 @@ Each leg's annotation names its own command; this table is only what the annotat
6262

6363
| Failure | What it actually means |
6464
|---|---|
65-
| `routeTree.gen.ts is stale` | Only a Vite build writes it. `cd webapp && pnpm run build`, then commit the file. |
66-
| `README images are stale` | The storybook job runs `export:readme-assets` *after* `test:storybook`, so the job goes red having printed a clean pass line. Run `pnpm --filter webapp run export:readme-assets` and commit `docs/images/readme`. |
65+
| `routeTree.gen.ts is stale` | Only a Vite build writes it. `cd webapp && bun run build`, then commit the file. |
66+
| `README images are stale` | The storybook job runs `export:readme-assets` *after* `test:storybook`, so the job goes red having printed a clean pass line. Run `bun run --filter webapp export:readme-assets` and commit `docs/images/readme`. |
6767
| Migrations gate | A changelog that reached `main` was edited, renamed or deleted, or a `master.xml` `<include>` was not appended at the end. Fix forward with a new changeset; never edit the released file. |
6868
| `verify-changesets` | The PR touches shipped code with no `.changeset/*.md`. `/land-pr` step 9 has the rules. |
6969
| App Server leg red on a docs-only PR | Expected, not a misconfiguration: `docs/**` is inside the `application-server` paths filter, because `docs:lint` and `check:diagrams` run on that leg. |
7070

7171
## 4. Reproduce locally before pushing
7272

7373
```bash
74-
pnpm run format
75-
pnpm run check
74+
bun run format
75+
bun run check
7676
```
7777

7878
`check` runs every leg CI runs except those needing Docker or a live credential — `docs:lint`

.claude/skills/land-pr/SKILL.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ disable-model-invocation: true
77
allowed-tools:
88
- Bash(gh *)
99
- Bash(git *)
10-
- Bash(pnpm *)
10+
- Bash(bun *)
1111
- Bash(./mvnw *)
1212
- Read
1313
- Grep
@@ -42,8 +42,8 @@ than guessing, and note the two shapes that surprise people:
4242
## 3. Format, then check
4343

4444
```bash
45-
pnpm run format
46-
pnpm run check
45+
bun run format
46+
bun run check
4747
```
4848

4949
`check` is the complete local quality gate — every leg is listed under `check` in the root
@@ -57,9 +57,9 @@ Generated artefacts are never hand-edited, and regeneration is destructive — i
5757
directory first, so stash local edits.
5858

5959
```bash
60-
pnpm run generate:api # controllers or DTOs changed: rewrites openapi.yaml AND webapp/src/api
61-
pnpm run db:draft-changelog # entities changed (needs Docker); then prune the diff to real deltas
62-
pnpm run db:generate-erd-docs # after any changelog change
60+
bun run generate:api # controllers or DTOs changed: rewrites openapi.yaml AND webapp/src/api
61+
bun run db:draft-changelog # entities changed (needs Docker); then prune the diff to real deltas
62+
bun run db:generate-erd-docs # after any changelog change
6363
```
6464

6565
`generate:api:application-server:specs` **exits 0 having written nothing** when a port it needs is
@@ -69,7 +69,7 @@ busy — HTTP, management, or the JMX port it defaults to. Pass free ports; the
6969
## 5. Run the tests your diff can break
7070

7171
```bash
72-
pnpm run test:webapp
72+
bun run test:webapp
7373
cd server && ./mvnw -pl application -am test -Dsurefire.includedGroups=unit -T 2C --batch-mode -q
7474
```
7575

@@ -85,11 +85,11 @@ A PR touching `server/`, `webapp/` or `docker/` needs a `.changeset/*.md` or `ve
8585
fails it.
8686

8787
```bash
88-
pnpm changeset # user-facing: pick the bump, write the summary in the operator's voice
89-
pnpm changeset --empty # no user-facing effect; say why in the body
88+
bun changeset # user-facing: pick the bump, write the summary in the operator's voice
89+
bun changeset --empty # no user-facing effect; say why in the body
9090
```
9191

92-
`pnpm changeset` is interactive — with no TTY, hand-write `.changeset/<slug>.md` (`.changeset/README.md`
92+
`bun changeset` is interactive — with no TTY, hand-write `.changeset/<slug>.md` (`.changeset/README.md`
9393
has the shape). The summary lands in `CHANGELOG.md` verbatim, so it names what an operator or user can
9494
now do, not a class or a file. **Pre-1.0, never pick `major`** — it would cut 1.0.0 and the gate
9595
rejects it; a breaking change rides in `minor` with `**Operators:** …` in the summary and a

.claude/skills/react-best-practices/AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1403,7 +1403,7 @@ Reduce SVG coordinate precision to decrease file size. The optimal precision dep
14031403
**Automate with SVGO:**
14041404

14051405
```bash
1406-
pnpm exec svgo --precision=1 --multipass icon.svg
1406+
bun x svgo --precision=1 --multipass icon.svg
14071407
```
14081408

14091409
### 6.5 Prevent Hydration Mismatch Without Flickering

.claude/skills/react-best-practices/rules/rendering-svg-precision.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@ Reduce SVG coordinate precision to decrease file size. The optimal precision dep
2424
**Automate with SVGO:**
2525

2626
```bash
27-
pnpm exec svgo --precision=1 --multipass icon.svg
27+
bun x svgo --precision=1 --multipass icon.svg
2828
```

.claude/skills/storybook-components/RUBRIC.md

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

33
Scope: `webapp/src/components/**` and their colocated `*.stories.tsx`. **Grade a diff, not the repo.**
44

5-
**Calibration contract.** A file that renders correctly, is formatted, passes `pnpm run check`, has a
5+
**Calibration contract.** A file that renders correctly, is formatted, passes `bun run check`, has a
66
story per variant and a green a11y panel scores **C**. C is the floor for competent work, not a
77
criticism. B costs deliberate design. A costs a rejected alternative written down. A+ is rare by
88
construction — at most one dimension per PR should reach it.
@@ -201,7 +201,7 @@ rather less than half the stories carry one, so the absence of a block is not by
201201
- **D** — A new rule added to prose that contradicts existing code, with no migration and no gate.
202202
- **C** — Rule in prose, no gate.
203203
- **B** — Rule in prose plus a mechanical check — an oxlint rule in `webapp/tools/oxlint/rules/`, or a
204-
node gate in `scripts/` wired into `pnpm run check`.
204+
node gate in `scripts/` wired into `bun run check`.
205205
- **A** — B, and the gate's own comment explains the neighbouring shapes it deliberately does *not*
206206
match, so nobody widens it into a nuisance — the house rules in `webapp/tools/oxlint/rules/` are the
207207
worked examples.

.claude/skills/storybook-components/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Load the one file that answers your question.
2929

3030
## Already enforced — do not re-litigate, and do not restate in prose
3131

32-
These fail `pnpm run check`. Treat a violation as a build error, not a style opinion, and do not
32+
These fail `bun run check`. Treat a violation as a build error, not a style opinion, and do not
3333
write a guideline that repeats one.
3434

3535
The house rules are registered in `webapp/tools/oxlint/index.ts` — read it rather than trusting a

0 commit comments

Comments
 (0)