* fix(update): gate Node provisioning on live ownership
Keep the private Node installer behind the existing native stdin gate until the updater revalidates requester identity and binds the child to its installation owners. Refused input can no longer let a stdin-independent installer mutate the private runtime before cancellation.
* test(update): prove native private Node provisioning
* fix(ci): route private Node live proof in release shards
* test(ci): preserve private Node proof isolation expectations
* fix(update): defer native preload options until admission
* test(update): satisfy native gate fixture lint
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
Complete managed Gateway upgrades after Node prefix changes while preserving the verified service during preparation and recovering only owned failed activations.
Keep requester/executor and original/candidate ownership through native children; retain uncertain cleanup and original failure outcomes. Source and isolated native component checks are documented in the canonical PR. The wider first-hop installer and other platform journeys remain separate program work.
Closes#107930. Canonical PR history retains the original contributor commits; repository-supported squash preserves explicit contributor credit.
Co-authored-by: Jason (Json) <263060202+fuller-stack-dev@users.noreply.github.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Dallin Romney <dallinromney@gmail.com>
* fix(runtime): reuse an available compatible Node at startup
Share startup recovery between the launcher and legacy CLI runtime admission
so older updaters can run target Doctor through dist/index.js under an
already installed compatible Node. Preserve process-contract exclusions,
arguments, environment, standard streams, and exit status.
Refs #140465
* test(runtime): include recovery proof in E2E routing
* fix(runtime): secure Node discovery and decode service scripts
Reject relative candidates and cwd-resolved runtimes before probing, except
for explicit absolute PATH directories. Parse generated Windows command
quoting and recorded code pages without loading application dependencies.
Skip CP850 and CP949 with a diagnostic instead of guessing executable paths.
Use real task-writer fixtures for encoding, quoting, and fallback coverage.
Refs #140465
* fix(runtime): reject cwd-local manager symlinks
* test(runtime): keep recovery home outside launcher cwd
* fix(runtime): isolate recovery from dotenv environment
* fix(runtime): canonicalize discovery paths before use
* fix(runtime): preserve private Node recovery from home
* refactor(runtime): trim Node recovery comments and aliases
Behavior-neutral cleanup of the recovery launcher module: fold the serviceHome and managerHome aliases into homeDir and shorten five comment blocks to the invariant they protect.
* feat: offer Node.js updates when the CLI runtime is incompatible
* fix: include Node runtime recovery in duplicate scans
---------
Co-authored-by: Morrow <morrow@bluedot.it.com>
The Node requirement has changed nine times in 2026 and the reasons (the
SQLite WAL-reset corruption floor and the separate node:sqlite TEXT NUL
decoder bug) were buried in install prose; the Bun page's Caveats section
had become the de facto Bun contract while sitting under Containers.
- Add docs/install/node-compatibility.md: supported lines, why the floors
exist, platform consequences, what each installer provisions, the guard
diagnostic, and a sourced history of the requirement across releases.
- Add docs/install/bun-compatibility.md: Bun requirements, per-platform
SQLite builds, macOS library selection and OPENCLAW_SQLITE_LIBRARY with
the preload migration, the memory scan fallback, known limitations, and
release history.
- Keep docs/install/node.md and docs/install/bun.md as install how-tos;
move the contract paragraphs to the new pages and link them.
- Add a Runtimes nav group (Node, Node compatibility, Bun, Bun
compatibility) and move Bun out of Containers; no URLs change.
- Point the environment reference, memory config, and install overview at
the new pages; add zh-CN glossary entries; add a docs guide bullet to
refresh the tables when the runtime floors in code change.
* fix(runtime): require Node builds with lossless SQLite reads
* fix(runtime): preserve upgrades and guard sealed workers
Validate downloaded Node before switching the active runtime alias, reject unsupported sealed-worker runtimes, and keep the Gateway error fixture on a supported Node release. Document the approved ARMv7 and older macOS compatibility losses and decoder fix boundaries.
* test(runtime): use typed process exports in worker fixture
* test(runtime): align installer fixtures without growing test shards
* test(runtime): align release and guest runtime fixtures
* fix(test): canonicalize Windows temp roots for Node 24
Expand Windows short paths before creating test directories and owned child environments. Node 24 filesystem watchers otherwise abort when native long event paths differ from inherited short temporary paths. Preserve explicit custom-root spelling and existing cleanup ownership.
* test(ci): run Windows temp-root regressions in the native lane
Walks the new reader path end to end and fixes each step where the docs
sent the reader somewhere the previous step had not prepared.
Landing page (docs/index.md): the Quick start installed with npm and then
ran `openclaw onboard --install-daemon`, which selects the classic wizard
(onboarding-overview.md), so the landing reader never saw the Quick start
and Custom setup choice that Getting Started narrates. It now uses the
installer script that install/index.md calls "Recommended", names which
wizard that opens, and adds the missing Gateway service step. The mobile
hub card "Get started" pointed at `/`, and the "Channels" card pointed at
one channel page while promising the catalog; both now point at the hub
they describe.
Install page (docs/install/index.md): "Verify the install" ended the page
with no route onward. Adds a next-step card group to Getting started and
to the channel hub. docs/install/node.md pointed "installer script" at the
alternative-methods anchor instead of the installer script section.
Getting Started (docs/start/getting-started.md): Step 2 left the Gateway
in the foreground and buried "Ctrl+C, then `openclaw gateway install`" in
prose, while Steps 3 and 4 assumed a running background Gateway. That is
now its own numbered step between onboarding and verification.
Channel hub (docs/channels/index.md): the "fastest setup is usually
Telegram" guidance sat at the bottom, below the catalog and a long group
introductions explanation, and the page carried no `openclaw channels add`
example. Both now sit above the 31-entry catalog.
Telegram (docs/channels/telegram.md): quick setup showed a JSON5 block
with no file path and no `openclaw channels add`, told the reader to run
`openclaw pairing list` without first sending the bot a message, and
started a second foreground Gateway that conflicts with the service the
Getting Started path installs. Step 2 now names `~/.openclaw/openclaw.json`
and leads with `openclaw channels add --channel telegram --token <token>`.
Restart and pairing are separate steps, the restart uses
`openclaw gateway restart` with `openclaw gateway` named as the
no-service case, and pairing starts by messaging the bot. The opening
line now says what the page is for.
macOS onboarding (docs/start/onboarding.md): the first three steps were
images with empty alt text. Each now says what dialog appears and which
button to click, and read_when addresses first-run readers rather than
the people implementing the flow.
First-run FAQ (docs/help/faq-first-run.md): the install answer ran the
installer and then onboarding again, the "what does onboarding do" answer
described the classic 8-step wizard as the default, install and
onboarding answers sat below heartbeat and exec-approval answers, the
provider-add command disagreed with the wizard pages, and the "I am
stuck" link landed on a heading rather than the accordion.
Also trims duplicated Quick start prose from onboarding-overview.md,
names the WhatsApp plugin prerequisite in openclaw.md, repairs the
localhost dashboard link and the install entries in hubs.md, cuts the
19-item "Start here" list in docs-directory.md, and splits the
single-instruction sentences named by the STE findings in telegram.md,
why-openclaw.md, teams.md, setup.md, and wizard-cli-automation.md.
Closes audit findings: r3-0936, r3-0937, r3-0938, r3-0939, r3-0940,
r3-0941, r3-0942, r3-0943, r3-0944, r3-0945, r3-0946, r3-0947, r3-0948,
r3-0949, r3-0950, r3-0951, r3-0952, r3-0953, r3-0954, r3-0955, r3-0956,
r3-0958, r3-0959, r3-0962, r3-0963, r3-0964, r3-0965
Add an owned Kysely dialect for native node:sqlite, raise the Node 22 floor to 22.16+ for StatementSync.columns(), and cover select/returning/stale insert id behavior.
docs/install/gcp.md: removed the duplicate '# OpenClaw on GCP Compute
Engine (Docker, Production VPS Guide)' H1 plus its redundant '## Goal'
header. Mintlify renders the title from frontmatter, so the body H1
created a brittle anchor and the prose now starts directly with the
goal sentence.
docs/install/node.md: replaced 8 typography characters (curly quotes
and non-breaking hyphens) with ASCII equivalents.
docs/tools/duckduckgo-search.md: replaced 9 typography characters with
ASCII equivalents.
docs/tools/browser-login.md: removed the duplicate '# Browser login +
X/Twitter posting' H1 (Mintlify renders title from frontmatter; the
'+' would also have produced a brittle anchor). Replaced 2 typography
characters with ASCII equivalents.
- install/docker.md: link to podman, clawdock, updating, config
- install/node.md: link to overview, updating, getting-started
- install/updating.md: link to overview, doctor, migrating
- help/troubleshooting.md: link to FAQ, gateway/channel/automation troubleshooting, doctor
* docs(install): reframe install overview to stop duplicating getting started
* docs(install): link default installer row to getting started, not internals
* docs(install): use Mintlify components for install overview
* docs(install): fix card grid layout with CardGroup
* docs(install): platform tabs for global install, npm/pnpm as accordion
* docs(install): add PowerShell no-onboard alternative
* docs(install): add repo link to from-source clone step
* docs(install): capitalize OpenClaw in repo link
* docs(install): add pnpm link --global to from-source steps
* docs(install): rewrite install overview for clarity and flow
* docs(install): use tooltip for Windows WSL2 recommendation
* docs(install): use Note box for Windows WSL2 recommendation
* docs(install): group install methods under single heading
* docs(install): standardize tab labels across installer sections
* docs(install): rewrite Node.js page with install instructions and better structure
* docs(install): clarify Node.js page intro
* docs(install): scope auto-install note to installer script, link Node page
* docs(install): fix installer script link to internals page
* docs: rename Install methods nav group to Other install methods
* docs(install): link to on-page anchor, use Tip box for recommended
* docs(install): wrap install methods in AccordionGroup with Tip box
* docs: move Node.js page from Install to Help > Environment and debugging
* docs(install): add complete flags and env vars reference to installer internals
* docs(install): use stable troubleshooting anchor for Node.js link
* docs(install): fix Node page installer anchor
* docs(install): fix broken installer script anchor in requirements note
* bugfix:The Mintlify navbar (logo + search bar with ⌘K) scrolls away when scrolling down the documentation, so it disappears from view.
* fix(docs): keep navbar visible on scroll (#2445) (thanks @chenyuan99)
---------
Co-authored-by: vignesh07 <vigneshnatarajan92@gmail.com>