From 23ddb6f4fc168a55d1cb46cba33bf4185afe4f77 Mon Sep 17 00:00:00 2001 From: jon Date: Thu, 23 Jul 2026 16:21:46 -0500 Subject: [PATCH] feat(ncp): doctor checks Node meets Vite's minimum (20.19+) Co-Authored-By: Claude Opus 4.8 --- management/ncp.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/management/ncp.py b/management/ncp.py index 9f018f4..49cb8fe 100644 --- a/management/ncp.py +++ b/management/ncp.py @@ -485,8 +485,23 @@ def cmd_doctor() -> None: except OSError: return "" + def node_ok(ver: str) -> bool: + # Vite needs Node 20.19+ (or 22.12+); Debian's apt 'nodejs' is EOL 18. + try: + parts = ver.lstrip("v").split(".") + major, minor = int(parts[0]), int(parts[1]) + except (ValueError, IndexError): + return False + return major >= 21 or (major == 20 and minor >= 19) + node, npm_path = shutil.which("node"), npm() - mark(bool(node), f"Node installed ({version(node)})", "Node missing") + node_ver = version(node) + mark(bool(node), f"Node installed ({node_ver})", "Node missing") + if node: + mark(node_ok(node_ver), + f"Node version OK ({node_ver} >= 20.19, Vite requirement)", + f"Node {node_ver} too old for Vite (needs 20.19+). Install Node 20 " + f"(re-run ./install.sh, or NodeSource), then rebuild with: ncp update") mark(bool(npm_path), f"npm installed ({version(npm_path)})", "npm missing") mark((FRONTEND_DIR / "node_modules").is_dir(), "Frontend node_modules installed",