diff --git a/CLAUDE.md b/CLAUDE.md index 564fe6dc..d64314d0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -92,7 +92,15 @@ imported by their package name (`officerdev`, `hooks`, `state`, `types`, `helper ## Tech Stack -- **Runtime**: Bun (Node 22 is enforced by a `preinstall` check) +- **Runtime**: Bun (Node 22 or newer is enforced by a `preinstall` check) + + That check demanded *exactly* 22 until 2026-08-12. The reason was a `node-pty` build + failure some months earlier, whose details were not recorded. It was relaxed to `>= 22` + after confirming node-pty ships **no Linux prebuilds** — its install script always falls + through to `node-gyp rebuild`, so it compiles against whatever Node is present and there + is no ABI to mismatch. Untested on 24 at the time of the change. If `bun install` fails + building node-pty, or `officer-pty` cannot load its native module, restore the exact pin + first. The source build also needs `build-essential` and `python3`. - **Language**: TypeScript, strict. `bunx tsgo` is clean — keep it that way. - **Frontend**: React 19, React Router 7, React Query, Tailwind 4, shadcn/ui + custom components - **Backend**: Hono diff --git a/package.json b/package.json index 26607350..cc98348a 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "src/workspaces/*" ], "scripts": { - "preinstall": "node -e \"var v = +process.versions.node.split('.')[0]; if (v < 22 || v > 22) { console.error('Node 22 required (got ' + process.versions.node + '). Run: nvm use 22'); process.exit(1); }\"", + "preinstall": "node -e \"var v = +process.versions.node.split('.')[0]; if (v < 22) { console.error('Node 22 or newer required (got ' + process.versions.node + '). Run: nvm use 22'); process.exit(1); }\"", "gen:index": "bun run ./scripts/gen-index.ts", "predev": "bun run ./scripts/gen-index.ts", "dev": "bun --env-file=.env --watch src/server.tsx",