Skip to content

Commit 2ff50f7

Browse files
feat: finalize pnpm migration (#727)
* feat: complete pnpm migration and fix lingering references * chore: address Copilot review feedback * chore: replace remaining npx calls with pnpm exec * fix: resolve CI version mismatch and finalize pnpm standardization * fix(ci): add vite to devDependencies for vitest * chore: update pnpm-lock.yaml after adding vite
1 parent e170c59 commit 2ff50f7

Some content is hidden

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

47 files changed

+380
-18820
lines changed

.claude/agents/enforcer.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,14 @@ color: red
8686
### Migration File Creation
8787

8888
- **Pre-Beta Constraint**: NO migration files in `supabase/migrations/`
89-
- **Forbidden Commands**: `drizzle-kit generate`, `npm run db:generate`
89+
- **Forbidden Commands**: `drizzle-kit generate`, `pnpm run db:generate`
9090
- **Context**: Zero users, schema in flux, velocity over safety
9191

9292
### Vitest Command Issues
9393

94-
- **Redirection Breaks Vitest**: `npm test 2>&1`, `vitest >>`
94+
- **Redirection Breaks Vitest**: `pnpm test 2>&1`, `vitest >>`
9595
- **Cause**: Vitest interprets redirection as test name filters
96-
- **Required**: Use `npm run test:brief`, `npm run test:verbose`
96+
- **Required**: Use `pnpm run test:brief`, `pnpm run test:verbose`
9797

9898
### Schema Modification Lock
9999

.claude/hooks/quality-check.cjs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ class FileDebouncer {
308308
shouldCheck(filePath) {
309309
const now = Date.now();
310310
const lastCheck = this.recentChecks.get(filePath) || 0;
311-
311+
312312
// If we checked this file recently (within debounce window), skip
313313
if (now - lastCheck < this.debounceMs) {
314314
log.debug(`Debouncing check for ${path.basename(filePath)} (last check ${now - lastCheck}ms ago)`);
@@ -371,7 +371,7 @@ class FileDebouncer {
371371
clearTimeout(timeoutId);
372372
}
373373
this.pendingChecks.clear();
374-
374+
375375
// Clear cleanup interval
376376
if (this.cleanupInterval) {
377377
clearInterval(this.cleanupInterval);
@@ -541,8 +541,8 @@ function analyzeFileContext(filePath, content) {
541541
// Check for incomplete import patterns
542542
const lines = content.split('\n');
543543
const importLines = lines.filter(line => line.trim().startsWith('import '));
544-
const nonImportLines = lines.filter(line =>
545-
line.trim() &&
544+
const nonImportLines = lines.filter(line =>
545+
line.trim() &&
546546
!line.trim().startsWith('import ') &&
547547
!line.trim().startsWith('//') &&
548548
!line.trim().startsWith('/*')
@@ -599,7 +599,7 @@ function analyzeFileContext(filePath, content) {
599599
}
600600
return false;
601601
});
602-
602+
603603
if (hasActualEmptyFunctions) {
604604
reasons.push('Found functions with empty or TODO-marked bodies');
605605
shouldSkip = true;
@@ -1100,7 +1100,7 @@ function isSourceFile(filePath) {
11001100
*/
11011101
function printSummary(problemCounts, autofixes) {
11021102
const problems = [];
1103-
1103+
11041104
if (problemCounts.typescript > 0) {
11051105
problems.push(`TypeScript: ${problemCounts.typescript} error${problemCounts.typescript > 1 ? 's' : ''}`);
11061106
}
@@ -1113,7 +1113,7 @@ function printSummary(problemCounts, autofixes) {
11131113
if (problemCounts.common > 0) {
11141114
problems.push(`Code issues: ${problemCounts.common} problem${problemCounts.common > 1 ? 's' : ''}`);
11151115
}
1116-
1116+
11171117
if (problems.length > 0) {
11181118
console.error(problems.join(', '));
11191119
}
@@ -1175,25 +1175,25 @@ async function main() {
11751175
if (totalProblems > 0) {
11761176
printSummary(problemCounts, autofixes);
11771177
console.error(`${colors.yellow}💡 Remember to resolve the issues before moving on to another file${colors.reset}`);
1178-
1178+
11791179
// Generate specific commands for this file
11801180
const relativePath = path.relative(projectRoot, filePath);
11811181
const commands = [];
1182-
1182+
11831183
if (problemCounts.typescript > 0) {
11841184
commands.push(`pnpm run typecheck:brief`);
11851185
}
11861186
if (problemCounts.eslint > 0) {
1187-
commands.push(`npx eslint "${relativePath}"`);
1187+
commands.push(`pnpm exec eslint "${relativePath}"`);
11881188
}
11891189
if (problemCounts.prettier > 0) {
1190-
commands.push(`npx prettier --check "${relativePath}"`);
1190+
commands.push(`pnpm exec prettier --check "${relativePath}"`);
11911191
}
1192-
1192+
11931193
if (commands.length > 0) {
11941194
console.error(`${colors.blue}💡 Run: ${commands.join(' && ')}${colors.reset}`);
11951195
}
1196-
1196+
11971197
console.error(`${colors.yellow}⚠ ${path.basename(filePath)} - has issues to resolve${colors.reset}`);
11981198
process.exit(0); // Advisory only - don't block workflow
11991199
} else {

.claude/settings.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"WebFetch(domain:prettier.io)",
1313
"WebFetch(domain:docs.npmjs.com)",
1414
"Bash(pnpm test:*)",
15-
"Bash(npx jest:*)",
15+
"Bash(pnpm test:*)",
1616
"Bash(pnpm run typecheck:*)",
1717
"Bash(pnpm run typecheck:brief:*)",
1818
"Bash(pnpm run build:*)",
@@ -22,16 +22,16 @@
2222
"Bash(pnpm run lint:*)",
2323
"Bash(pnpm run check:brief:*)",
2424
"Bash(pnpm run smoke:*)",
25-
"Bash(npx eslint:*)",
26-
"Bash(npx prettier:*)",
27-
"Bash(npx next:*)",
25+
"Bash(pnpm exec eslint:*)",
26+
"Bash(pnpm exec prettier:*)",
27+
"Bash(pnpm exec next:*)",
2828
"Bash(pnpm dlx shadcn:*)",
2929
"WebFetch(domain:ui.shadcn.com)",
3030
"Bash(pnpm exec playwright test:*)",
3131
"Bash(pnpm exec playwright show-trace:*)",
3232
"Bash(PLAYWRIGHT_PORT=3001 pnpm run smoke)",
3333
"Bash(./scripts/safe-curl.sh:*)",
34-
"Bash(npx tsc:*)",
34+
"Bash(pnpm exec tsc:*)",
3535
"Bash(ls:*)",
3636
"Bash(grep:*)",
3737
"Bash(gitleaks detect:*)",

.claude/skills/pinpoint-testing/SKILL.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ Use this skill when:
2323

2424
### Commands
2525
```bash
26-
npm run check # Quick: types + lint + unit (~5s)
27-
npm test # Unit tests only
28-
npm test -- path/to/file.test.ts # Targeted unit test
29-
npm run test:integration # DB integration tests (requires supabase start)
30-
npm run smoke # E2E smoke tests (Playwright)
31-
npm run preflight # Full suite (~60s) - run before commit
26+
pnpm run check # Quick: types + lint + unit (~5s)
27+
pnpm test # Unit tests only
28+
pnpm test -- path/to/file.test.ts # Targeted unit test
29+
pnpm run test:integration # DB integration tests (requires supabase start)
30+
pnpm run smoke # E2E smoke tests (Playwright)
31+
pnpm run preflight # Full suite (~60s) - run before commit
3232
```
3333

3434
### Critical Rules
@@ -301,7 +301,7 @@ Before committing tests:
301301
- [ ] No arbitrary `waitForTimeout()` in E2E tests
302302
- [ ] Tests are independent (no shared state)
303303
- [ ] Testing behavior, not implementation
304-
- [ ] `npm run preflight` passes (includes all test suites)
304+
- [ ] `pnpm run preflight` passes (includes all test suites)
305305

306306
## Additional Resources
307307

.claude/skills/pinpoint-typescript/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ Before committing TypeScript code:
421421
- [ ] Optional properties use conditional spread
422422
- [ ] Type guards for complex narrowing
423423
- [ ] Path aliases (`~/`) instead of relative imports
424-
- [ ] `npm run typecheck` passes
424+
- [ ] `pnpm run typecheck` passes
425425

426426
## Additional Resources
427427

.claude/skills/pinpoint-ui/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ Use this skill when:
2828

2929
### Adding Components
3030
```bash
31-
npx shadcn@latest add [component]
31+
pnpm exec shadcn@latest add [component]
3232
```
3333

3434
## Detailed Documentation

.devcontainer/bootstrap.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ export PATH="$HOME/.local/bin:$PATH"
1010

1111
# Install Claude Code CLI
1212
echo "📦 Installing Claude Code CLI..."
13-
npm install -g @anthropic-ai/claude-code
13+
pnpm install -g @anthropic-ai/claude-code
1414

1515
# Install project dependencies
1616
echo "📦 Installing project dependencies..."
17-
npm install
17+
pnpm install
1818

1919
# Check if .env.local exists, if not create from example
2020
if [ ! -f .env.local ]; then
@@ -45,5 +45,5 @@ echo ""
4545
echo "📝 Next steps:"
4646
echo " 1. Authenticate Claude Code: claude auth login"
4747
echo " 2. Update .env.local with your Supabase credentials"
48-
echo " 3. Run 'npm run dev' to start the development server"
48+
echo " 3. Run 'pnpm run dev' to start the development server"
4949
echo ""

.github-staging/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ jobs:
151151
run: npm ci
152152

153153
- name: Install Playwright browsers
154-
run: npx playwright install chromium --with-deps
154+
run: pnpm exec playwright install --with-deps chromium
155155

156156
- name: Run smoke tests
157157
run: npm run smoke

.github/copilot-instructions.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ Refer to `docs/PATTERNS.md` index for:
9595
Run (or ensure CI runs) before pushing:
9696

9797
```bash
98-
npm run typecheck
99-
npm run lint
100-
npm run test
101-
npm run format
98+
pnpm run typecheck
99+
pnpm run lint
100+
pnpm run test
101+
pnpm run format
102102
```
103103

104104
(Use eventual `preflight` script when added.) Conventional commit messages.

.github/dependabot.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
version: 2
22
updates:
3-
# npm dependencies with different cooldowns per update type
4-
- package-ecosystem: "npm"
3+
# pnpm dependencies with different cooldowns per update type
4+
- package-ecosystem: "pnpm"
55
directory: "/"
66
schedule:
77
interval: "daily"
@@ -33,7 +33,7 @@ updates:
3333
- "patch"
3434
labels:
3535
- "dependencies"
36-
- "npm"
36+
- "pnpm"
3737

3838
# GitHub Actions with 2-week cooldown
3939
- package-ecosystem: "github-actions"

0 commit comments

Comments
 (0)