From 4476e0573e955848bf4613a864cc855f04d11dcc Mon Sep 17 00:00:00 2001 From: oyi77 Date: Fri, 17 Apr 2026 00:37:22 +0700 Subject: [PATCH 1/2] docs: fix outdated Node 24 warnings in TROUBLESHOOTING.md Address Gemini code review feedback on PR #1340: - Remove outdated 'Node.js 24+ not supported' warnings from lines 18, 32, 52 - Update Quick Fixes table to remove Node 24 reference - Update Node.js Compatibility section to reflect Node 24 support - Update recommended version to Node 24 in fix instructions - Pin Dockerfile base images to 24.14.1 for reproducibility - Clarify SUPPORTED_NODE_DISPLAY to show '24.0.0+' minimum All documentation now consistent with Node 24 LTS support. --- Dockerfile | 4 ++-- docs/TROUBLESHOOTING.md | 17 +++++++---------- src/shared/utils/nodeRuntimeSupport.ts | 2 +- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6bc43cb6bdfa..706ba212c1df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24-trixie-slim AS builder +FROM node:24.14.1-trixie-slim AS builder WORKDIR /app RUN apt-get update \ @@ -13,7 +13,7 @@ RUN if [ -f package-lock.json ]; then npm ci --no-audit --no-fund; else npm inst COPY . ./ RUN mkdir -p /app/data && npm run build -- --webpack -FROM node:24-trixie-slim AS runner-base +FROM node:24.14.1-trixie-slim AS runner-base WORKDIR /app LABEL org.opencontainers.image.title="omniroute" \ diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index fc0e6526b399..58ea1967c637 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -15,7 +15,7 @@ Common problems and solutions for OmniRoute. | No logs written to disk | Set `APP_LOG_TO_FILE=true` and verify call log capture is enabled | | EACCES: permission denied | Set `DATA_DIR=/path/to/writable/dir` to override `~/.omniroute` | | Routing strategy not saving | Update to v1.4.11+ (Zod schema fix for settings persistence) | -| Login crash / blank page | You may be on Node.js 24+ — see [Node.js Compatibility](#nodejs-compatibility) below | +| Login crash / blank page | Check Node.js version — see [Node.js Compatibility](#nodejs-compatibility) below | | `dlopen` / `slice is not valid mach-o file` (macOS) | Run `cd $(npm root -g)/omniroute/app && npm rebuild better-sqlite3 && omniroute` — see [macOS native module rebuild](#macos-native-module-rebuild) below | | Proxy "fetch failed" | Ensure proxy config is set at the correct level — see [Proxy Issues](#proxy-issues) below | @@ -27,10 +27,7 @@ Common problems and solutions for OmniRoute. ### Login page crashes or shows "Module self-registration" error -**Cause:** You are running a Node.js version outside OmniRoute's approved secure runtime floor. Two cases matter: - -1. **Node.js 24+**: `better-sqlite3` is not supported here and startup can fail hard. -2. **Older Node 20/22 patch levels**: the runtime may start, but it falls below the patched security floor OmniRoute now requires. +**Cause:** You are running a Node.js version outside OmniRoute's approved secure runtime floor. The most common case is running an older Node 20/22 patch level that falls below the patched security floor OmniRoute requires. **Symptoms:** @@ -40,16 +37,16 @@ Common problems and solutions for OmniRoute. **Fix:** -1. Install a patched Node.js 22 LTS release (recommended): +1. Install a supported Node.js LTS release (recommended: Node.js 24.x): ```bash - nvm install 22.22.2 - nvm use 22.22.2 + nvm install 24 + nvm use 24 ``` -2. Verify your version: `node --version` should show `v22.22.2` or newer on the 22.x LTS line +2. Verify your version: `node --version` should show `v24.0.0` or newer 3. Reinstall OmniRoute: `npm install -g omniroute` 4. Restart: `omniroute` -> **Supported secure versions:** `>=20.20.2 <21` or `>=22.22.2 <23`. Node.js 24+ is **not supported**. +> **Supported secure versions:** `>=20.20.2 <21`, `>=22.22.2 <23`, or `>=24.0.0 <25`. Node.js 24.x LTS (Krypton) is fully supported. ### macOS: `dlopen` / "slice is not valid mach-o file" diff --git a/src/shared/utils/nodeRuntimeSupport.ts b/src/shared/utils/nodeRuntimeSupport.ts index 2106ed1c0bf0..98daa345d08e 100644 --- a/src/shared/utils/nodeRuntimeSupport.ts +++ b/src/shared/utils/nodeRuntimeSupport.ts @@ -16,7 +16,7 @@ export const SECURE_NODE_LINES = Object.freeze([ export const RECOMMENDED_NODE_VERSION = "24.14.1"; export const SUPPORTED_NODE_RANGE = ">=20.20.2 <21 || >=22.22.2 <23 || >=24.0.0 <25"; export const SUPPORTED_NODE_DISPLAY = - "Node.js 20.20.2+ (20.x LTS), 22.22.2+ (22.x LTS), or 24.x (24.x LTS)"; + "Node.js 20.20.2+ (20.x LTS), 22.22.2+ (22.x LTS), or 24.0.0+ (24.x LTS)"; export interface NodeVersionInfo { major: number; From 9a8b7c87408a1757f4960da06a82d837ae74390b Mon Sep 17 00:00:00 2001 From: oyi77 Date: Fri, 17 Apr 2026 00:48:41 +0700 Subject: [PATCH 2/2] docs: address Gemini review feedback - Clarify that Node 24 patch levels can also fall below security floor - Specify verification should be on 24.x LTS line to avoid confusion with Node 25+ --- docs/TROUBLESHOOTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md index 58ea1967c637..f9a69755bbe2 100644 --- a/docs/TROUBLESHOOTING.md +++ b/docs/TROUBLESHOOTING.md @@ -27,7 +27,7 @@ Common problems and solutions for OmniRoute. ### Login page crashes or shows "Module self-registration" error -**Cause:** You are running a Node.js version outside OmniRoute's approved secure runtime floor. The most common case is running an older Node 20/22 patch level that falls below the patched security floor OmniRoute requires. +**Cause:** You are running a Node.js version outside OmniRoute's approved secure runtime floor. The most common case is running an older Node 20, 22, or 24 patch level that falls below the patched security floor OmniRoute requires. **Symptoms:** @@ -42,7 +42,7 @@ Common problems and solutions for OmniRoute. nvm install 24 nvm use 24 ``` -2. Verify your version: `node --version` should show `v24.0.0` or newer +2. Verify your version: `node --version` should show `v24.0.0` or newer on the 24.x LTS line 3. Reinstall OmniRoute: `npm install -g omniroute` 4. Restart: `omniroute`