- Detect 'inappropriate ioctl' as a gum raw-mode failure so the
installer falls back to running without a spinner instead of leaking
the error to stdout.
- Capture gum stdout in run_with_spinner so ioctl messages don't leak
even when gum returns success.
- Run ensure_openclaw_bin_link before resolve_openclaw_bin so the
@next retry only triggers when the package genuinely failed to
install, not when the bin symlink is simply missing.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tighten installer/runtime consistency so users on Node 22.0-22.11 are blocked before install/runtime drift, with cleaner CLI guidance.
- Enforce Node >=22.12 in scripts/install.sh preflight checks
- Align installer messages to the same 22.12+ runtime floor
- Replace openclaw.mjs thrown version error with stderr+exit to avoid noisy stack traces
Surface a clear Node 22.12+ requirement before npm/install bootstrap work so users avoid misleading downstream errors.
- Add installer shell preflight to block active Node <22 and suggest NVM recovery commands
- Add openclaw.mjs runtime preflight for npm/npx usage with explicit Node version guidance
- Keep messaging actionable for both NVM and non-NVM environments