Skip to content

fix(bootstrap-windows): restore separate Ubuntu setup handoff - #4278

Merged
ericksoa merged 1 commit into
mainfrom
fix/bootstrap-windows-ubuntu-handoff-window
May 27, 2026
Merged

fix(bootstrap-windows): restore separate Ubuntu setup handoff#4278
ericksoa merged 1 commit into
mainfrom
fix/bootstrap-windows-ubuntu-handoff-window

Conversation

@zyang-dev

@zyang-dev zyang-dev commented May 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes a regression from #4101 where first-run Ubuntu account setup ran inside the current PowerShell console, causing prompt alignment issues. This restores the separate WSL handoff window, keeps the Ubuntu-24.04 default, and documents how users with an existing Ubuntu distro can reuse it with -DistroName Ubuntu.

Changes

  • Defer missing Ubuntu distro installation to the final handoff window.
  • Skip Docker-in-WSL verification until first-run Ubuntu setup completes.
  • Update bootstrap tests to guard against same-console wsl --install regressions.
  • Document the Ubuntu-24.04 default and -DistroName Ubuntu override.

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Verification

  • npx prek run --all-files passes
  • npm test passes
  • Tests added or updated for new or changed behavior
  • No secrets, API keys, or credentials committed
  • Docs updated for user-facing behavior changes
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Signed-off-by: zyang-dev 267119621+zyang-dev@users.noreply.github.com

Summary by CodeRabbit

  • Documentation
    • Updated Windows preparation guide with clarified instructions for Ubuntu 24.04 installation, WSL 2 feature enablement, Docker Desktop setup, and system restart procedures. Added details on default distro configuration and reusing existing distributions.

Review Change Stack

Signed-off-by: zyang-dev <267119621+zyang-dev@users.noreply.github.com>
@zyang-dev zyang-dev self-assigned this May 27, 2026
@coderabbitai

coderabbitai Bot commented May 27, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 123e7078-3438-4b40-83e2-685a498c2c1d

📥 Commits

Reviewing files that changed from the base of the PR and between 84c8b0d and 626e88e.

📒 Files selected for processing (3)
  • docs/get-started/windows-preparation.mdx
  • scripts/bootstrap-windows.ps1
  • test/bootstrap-windows.test.ts

📝 Walkthrough

Walkthrough

The bootstrap script now implements a two-phase Ubuntu 24.04 installation on Windows: it defers actual distro installation to a separate handoff window when the distro is not yet registered, using a flag to coordinate between preflight checks and handoff execution while deferring Docker verification accordingly.

Changes

Deferred Ubuntu Installation Handoff

Layer / File(s) Summary
Deferred installation flag and command text format
scripts/bootstrap-windows.ps1
$script:InstallDistroAtHandoff flag controls deferred behavior; Get-WslInstallCommandText updated to emit -d format; Write-WslUbuntuRequiredNotice uses the updated command syntax.
Ubuntu WSL preflight check with deferred decision
scripts/bootstrap-windows.ps1
Ensure-UbuntuWsl checks if distro is registered and sets the flag to defer installation instead of installing immediately.
Handoff window installation and user guidance
scripts/bootstrap-windows.ps1
Open-UbuntuForInstaller runs wsl --install -d $DistroName during handoff when flag is set; Write-InstallerHandoff conditionally describes separate vs. direct window behavior; error handling prints Ubuntu required notice on deferred install failure.
Docker verification deferral
scripts/bootstrap-windows.ps1
Invoke-Main skips Docker-in-WSL verification when installation is deferred, with a status message indicating deferral.
Windows preparation documentation
docs/get-started/windows-preparation.mdx
Bootstrap script behavior documented with WSL 2, Ubuntu 24.04, Docker Desktop, and reboot continuation steps; advanced -DistroName option and default distro explained; manual install steps updated to wsl --install -d Ubuntu-24.04.
Test coverage for deferred installation
test/bootstrap-windows.test.ts
Tests validate Start-Process wsl --install -d Ubuntu-24.04 calls (not native wsl.exe); deferred launch failure scenario captures error output with updated guidance assertions.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • NVIDIA/NemoClaw#4101: Both PRs modify the Windows bootstrap and test logic around deferred Ubuntu 24.04 installation via Ensure-UbuntuWsl, Open-UbuntuForInstaller, and Write-InstallerHandoff, though in opposite behavioral directions.

Suggested labels

bug, Platform: Windows/WSL, fix, Getting Started

Suggested reviewers

  • ericksoa
  • cv

🐰 Two windows, one distro, no delay,
Ubuntu waits for the handoff day.
Bootstrap defers with grace,
Installation finds its place.
WSL flows, -d shows the way!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main fix: restoring a separate Ubuntu setup handoff window that was lost in a previous regression.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/bootstrap-windows-ubuntu-handoff-window

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

Copy link
Copy Markdown
Contributor

@github-actions

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: wsl-e2e
Optional E2E: wsl-repo-cloud-openclaw, docs-validation-e2e

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • wsl-e2e (high): Closest existing merge-blocking coverage for Windows/WSL install and onboarding impact. It runs on windows-latest, provisions Ubuntu WSL, builds NemoClaw in WSL, and runs the full WSL E2E when Docker is reachable.

Optional E2E

  • wsl-repo-cloud-openclaw (high): Scenario-framework WSL coverage for repo-current install with cloud OpenClaw onboarding; useful corroboration that WSL platform assumptions still work after bootstrap/handoff changes.
  • docs-validation-e2e (low): Validates documentation references and docs/CLI consistency adjacent to the updated Windows preparation guide.

New E2E recommendations

  • windows-bootstrap-script (high): Existing WSL E2E workflows provision WSL themselves and do not execute scripts/bootstrap-windows.ps1 end-to-end. This PR specifically changes deferred Ubuntu-24.04 installation/handoff and Docker verification skip behavior, which lacks direct E2E coverage.
    • Suggested test: Add a Windows bootstrap E2E that runs scripts/bootstrap-windows.ps1 on windows-latest in a controlled mode, verifies the default Ubuntu-24.04 handoff command, confirms missing distro handling, and validates behavior when Docker Desktop/WSL integration is unavailable.

@github-actions

Copy link
Copy Markdown
Contributor

E2E Scenario Advisor Recommendation

Required scenario E2E: None
Optional scenario E2E: None

Workflow run

Full scenario advisor summary

E2E Scenario Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required scenario E2E

  • None. No scenario workflow, scenario metadata, scenario runtime, or validation-suite files changed.

Optional scenario E2E

  • None.

Relevant changed files

  • None.

@github-actions

Copy link
Copy Markdown
Contributor

PR Review Advisor

Findings: 0 needs attention, 0 worth checking, 0 nice ideas
Top item: No blocking code findings

Workflow run details

This is an automated advisory review. A human maintainer must make the final merge decision.

@ericksoa
ericksoa merged commit 1934c92 into main May 27, 2026
32 checks passed
cv added a commit that referenced this pull request May 27, 2026
## Summary

Refresh NemoClaw documentation and regenerated user skills for the
v0.0.52 release-prep window. Adds the v0.0.52 release-notes entry and
regenerates `nemoclaw-user-*` skills so the published Fern docs and the
agent-skill references stay in sync.

## Source summary

- #4260 -> `docs/about/release-notes.mdx`: Document the OpenClaw runtime
bump to 2026.5.22 and call out the `min_openclaw_version` compatibility
floor versus `OPENCLAW_VERSION` Dockerfile pin. (Architecture and
commands pages were already updated in #4260 itself.)
- #4272 -> `docs/about/release-notes.mdx`: Document the Hermes v0.14
root-entrypoint sandbox layout repair (precreated runtime dirs, sticky
group-writable `/sandbox/.hermes`, removed `gateway.pid` symlink
precreation, legacy state cleanup at launch).
- #4261 -> `docs/about/release-notes.mdx`: Document the onboard ready
output restoration that points users at `nemoclaw <name> dashboard-url
--quiet`.
- #4200 -> `docs/about/release-notes.mdx`: Document Slack token
validation in onboarding so invalid `SLACK_BOT_TOKEN` values trigger a
re-prompt instead of silent advance.
- #4278 -> `docs/about/release-notes.mdx`: Document the Windows
bootstrap regression fix that restores the separate Ubuntu setup handoff
window, keeps `Ubuntu-24.04` as the default distro, and documents
`-DistroName Ubuntu` to reuse an existing distro. (The
`docs/get-started/windows-preparation.mdx` page was already updated in
#4278 itself.)
- #4092 -> `docs/about/release-notes.mdx`: Document the blueprint
private-network blocklist reload when `private-networks.yaml` changes on
disk.
- Release cleanup -> `.agents/skills/nemoclaw-user-*`: Regenerate user
skills with `scripts/docs-to-skills.py docs/ .agents/skills/ --prefix
nemoclaw-user --doc-platform fern-mdx` so the agent-skill references
pick up the v0.0.52 release-notes update plus the WeChat / WhatsApp doc
changes that already landed in #4276.

## Type of Change

- [ ] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [x] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)

## Verification

- `python3 scripts/docs-to-skills.py docs/ .agents/skills/ --prefix
nemoclaw-user --doc-platform fern-mdx` -> 10 skills, 1724 lines, 29
reference files.
- `npm run docs` -> 0 errors, 1 warning (Fern check clean).
- `npm run build:cli` -> success (refreshed `dist/` so the pre-push
TypeScript hook passes).
- Skip-list check against `docs/.docs-skip` `skip-terms`: no "permissive
mode", "shields down", "shields up", "shields status", "config
rotate-token", or "rotate-token" strings in `docs/` or generated skills.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Experimental WeChat messaging channel added (QR pairing), alongside
Telegram, Discord, Slack, and WhatsApp.

* **Documentation**
* Updated onboarding, messaging-channel, CLI, and troubleshooting docs
to include WeChat/WhatsApp (marked experimental) and new onboarding
flags/notes.
* Clarified provider validation and runtime routing behavior for
OpenAI-compatible endpoints and Google Gemini.
  * Updated Windows bootstrap/WSL guidance to target Ubuntu 24.04.

* **Chores**
* Added v0.0.52 release notes (runtime upgrade, sandbox hardening,
onboarding and network fixes).

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/NVIDIA/NemoClaw/pull/4293?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: Carlos Villela <cvillela@nvidia.com>
@wscurran wscurran added platform: windows Affects native Windows environments platform: wsl Affects Windows Subsystem for Linux bug-fix PR fixes a bug or regression and removed Platform: Windows/WSL labels Jun 3, 2026
@cv
cv deleted the fix/bootstrap-windows-ubuntu-handoff-window branch June 28, 2026 00:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug-fix PR fixes a bug or regression platform: windows Affects native Windows environments platform: wsl Affects Windows Subsystem for Linux

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants