chore: upgrade Node.js runtime to v24 across codebase
All checks were successful
ci/woodpecker/push/orchestrator Pipeline was successful
ci/woodpecker/push/api Pipeline was successful
ci/woodpecker/push/web Pipeline was successful

- Update .woodpecker/codex-review.yml: node:22-slim → node:24-slim
- Update packages/cli-tools engines: >=18 → >=24.0.0
- Update README.md, CONTRIBUTING.md, prerequisites docs to reference Node 24+
- Rename eslint.config.js → eslint.config.mjs to eliminate Node 24
  MODULE_TYPELESS_PACKAGE_JSON warnings (ESM detection overhead)
- Add .nvmrc targeting Node 24
- Fix pre-existing no-unsafe-return lint error in matrix-room.service.ts
- Add Campsite Rule to CLAUDE.md
- Regenerate Prisma client for Node 24 compatibility

All Dockerfiles and main CI pipelines already used node:24. This commit
aligns the remaining stragglers (codex-review CI, cli-tools engines,
documentation) and resolves Node 24 ESM module detection warnings.

Quality gates: lint  typecheck  tests  (6 pre-existing API failures)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jason Woltje
2026-02-16 17:33:26 -06:00
parent c917a639c4
commit 8961f5b18c
12 changed files with 42 additions and 16 deletions

1
.nvmrc Normal file
View File

@@ -0,0 +1 @@
24

View File

@@ -12,7 +12,7 @@ when:
event: pull_request event: pull_request
variables: variables:
- &node_image "node:22-slim" - &node_image "node:24-slim"
- &install_codex "npm i -g @openai/codex" - &install_codex "npm i -g @openai/codex"
steps: steps:

View File

@@ -475,3 +475,25 @@ Related Repositories
--- ---
Mosaic Stack v0.0.x — Building the future of personal assistants. Mosaic Stack v0.0.x — Building the future of personal assistants.
## Campsite Rule (MANDATORY)
If you modify a line containing a policy violation, you MUST either:
1. **Fix the violation properly** in the same change, OR
2. **Flag it as a deferred item** with documented rationale
**"It was already there" is NEVER an acceptable justification** for perpetuating a violation in code you touched. Touching it makes it yours.
Examples of violations you must fix when you touch the line:
- `as unknown as Type` double assertions — use type guards instead
- `any` types — narrow to `unknown` with validation or define a proper interface
- Missing error handling — add it if you're modifying the surrounding code
- Suppressed linting rules (`// eslint-disable`) — fix the underlying issue
If the proper fix is too large for the current scope, you MUST:
- Create a TODO comment with issue reference: `// TODO(#123): Replace double assertion with type guard`
- Document the deferral in your PR/commit description
- Never silently carry the violation forward

View File

@@ -90,7 +90,7 @@ docker compose down
If you prefer manual installation, you'll need: If you prefer manual installation, you'll need:
- **Docker mode:** Docker 24+ and Docker Compose - **Docker mode:** Docker 24+ and Docker Compose
- **Native mode:** Node.js 22+, pnpm 10+, PostgreSQL 17+ - **Native mode:** Node.js 24+, pnpm 10+, PostgreSQL 17+
The installer handles these automatically. The installer handles these automatically.

View File

@@ -93,7 +93,10 @@ export class MatrixRoomService {
select: { matrixRoomId: true }, select: { matrixRoomId: true },
}); });
return workspace?.matrixRoomId ?? null; if (!workspace) {
return null;
}
return workspace.matrixRoomId ?? null;
} }
/** /**

View File

@@ -4,26 +4,26 @@ Required and optional software for Mosaic Stack development.
## Required ## Required
### Node.js 20+ ### Node.js 24+
```bash ```bash
# Install using nvm (recommended) # Install using nvm (recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
nvm install 20 nvm install 24
nvm use 20 nvm use 24
# Verify installation # Verify installation
node --version # Should be v20.x.x node --version # Should be v24.x.x
``` ```
### pnpm 9+ ### pnpm 10+
```bash ```bash
# Install globally # Install globally
npm install -g pnpm@9 npm install -g pnpm@10
# Verify installation # Verify installation
pnpm --version # Should be 9.x.x pnpm --version # Should be 10.x.x
``` ```
### PostgreSQL 17+ ### PostgreSQL 17+
@@ -158,8 +158,8 @@ Configure `OLLAMA_MODE=remote` and `OLLAMA_ENDPOINT` in `.env`.
Check all required tools are installed: Check all required tools are installed:
```bash ```bash
node --version # v20.x.x or higher node --version # v24.x.x or higher
pnpm --version # 9.x.x or higher pnpm --version # 10.x.x or higher
git --version # 2.x.x or higher git --version # 2.x.x or higher
docker --version # 24.x.x or higher (if using Docker) docker --version # 24.x.x or higher (if using Docker)
psql --version # 17.x.x or higher (if using native PostgreSQL) psql --version # 17.x.x or higher (if using native PostgreSQL)

View File

@@ -16,8 +16,8 @@ Thank you for your interest in contributing to Mosaic Stack! This document provi
### Prerequisites ### Prerequisites
- **Node.js:** 20.0.0 or higher - **Node.js:** 24.0.0 or higher
- **pnpm:** 10.19.0 or higher (package manager) - **pnpm:** 10.0.0 or higher (package manager)
- **Docker:** 20.10+ and Docker Compose 2.x+ (for database services) - **Docker:** 20.10+ and Docker Compose 2.x+ (for database services)
- **Git:** 2.30+ for version control - **Git:** 2.30+ for version control

View File

@@ -38,7 +38,7 @@
"orchestration" "orchestration"
], ],
"engines": { "engines": {
"node": ">=18" "node": ">=24.0.0"
}, },
"os": [ "os": [
"linux", "linux",