Skip to content

fix(cli): surface copy-paste recovery hints in onboard error paths#4426

Merged
ericksoa merged 7 commits into
mainfrom
fix/4425-cli-recovery-hints
May 28, 2026
Merged

fix(cli): surface copy-paste recovery hints in onboard error paths#4426
ericksoa merged 7 commits into
mainfrom
fix/4425-cli-recovery-hints

Conversation

@laitingsheng

@laitingsheng laitingsheng commented May 28, 2026

Copy link
Copy Markdown
Contributor

Summary

Two nemoclaw onboard error paths named the root cause and exited non-zero, but neither emitted the copy-paste-ready recovery command the T5987921 spec requires. Sandbox-name validation now appends a Try: <derived-slug> line whenever a recoverable slug differs from the rejected input, and the non-interactive NVIDIA_API_KEY requirement now prints the concrete export NVIDIA_API_KEY=nvapi-... line plus the existing build-provider help URL.

Related Issue

Fixes #4425.

Changes

  • src/lib/name-validation.ts: add and export suggestNameSlug(value) which derives a copy-paste-ready RFC 1123 label from arbitrary user input (lowercase, replace illegal characters with -, collapse runs of -, trim terminal -, prefix a leading non-letter with s-, truncate to NAME_MAX_LENGTH) and returns null when no recoverable slug exists or the input is already valid. getNameValidationGuidance(label, value, opts) now appends a Try: <slug> line whenever suggestNameSlug(value) yields a non-null suggestion, so every CLI surface that already prints guidance (onboard, sandbox-agent, deploy) picks it up automatically.
  • src/lib/onboard/missing-credential-hints.ts: new helper module exposing logMissingNvidiaApiKeyHelp(helpUrl). The helper emits a three-line recovery block before the caller exits non-zero — first the requirement line (NVIDIA_API_KEY (or NEMOCLAW_PROVIDER_KEY) is required for NVIDIA Endpoints in non-interactive mode.), then the Set with: label on its own line followed by the standalone export NVIDIA_API_KEY=nvapi-... command so the user can copy-paste it directly, and finally the existing Get a key from <helpUrl> line when a help URL is configured.
  • src/lib/onboard.ts: the non-interactive NVIDIA_API_KEY "is required" branch in the build-provider configuration step delegates to logMissingNvidiaApiKeyHelp and then exits non-zero, replacing the previous inline console.error block. This keeps the top-level entrypoint net-smaller and satisfies the codebase-growth-guardrails policy.
  • src/lib/runner.ts and src/lib/name-validation.ts: the RFC 1123 label regex now lives once in name-validation.ts as the exported NAME_VALID_PATTERN, and runner.ts:validateName() imports it instead of duplicating the literal — so the slug helper and the hard validator cannot drift.
  • test/onboard-sandbox-name.test.ts: update the existing equality assertions for getNameValidationGuidance to expect the new Try: <slug> line where the input is recoverable, and add a dedicated suggestNameSlug describe block covering: mixed-case (MyAssistantmyassistant), illegal characters mapped to hyphen (bad name, My Project Sandbox, agent_007), collapsed and trimmed hyphen runs that produce a different slug (--legacy--, foo bar), digit-leading inputs that gain the s- prefix (123-leading, 9lives), length truncation (a × 80a × 63), the already-valid no-op cases including internal hyphen runs (my-assistant, openclaw, a---b), and the unrecoverable cases that return null (empty string, ---, !!!). A subprocess test drives the onboard entrypoint with { sandboxName: "MyAssistant", nonInteractive: true } and asserts exit code 1, the Invalid sandbox name: 'MyAssistant'. error line, and the standalone Try: myassistant recovery line so the CLI wiring cannot regress while the helper-level tests pass.

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: Tinson Lai tinsonl@nvidia.com

Summary by CodeRabbit

  • New Features

    • Shows a "Try: " sandbox-name hint when input is invalid, offering a compliant lowercase, hyphen-separated slug when possible.
    • Non-interactive onboarding now exits early with clear copy-paste recovery instructions ("Set with:" and example) and an optional help URL when required provider credentials are missing.
  • Documentation

    • Updated onboarding and troubleshooting docs to reflect stricter name validation and the new "Try:" suggestion behavior.
  • Tests

    • Added/updated tests covering slug suggestions and non-interactive credential failure behavior.

Review Change Stack

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@coderabbitai

coderabbitai Bot commented May 28, 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: 8530dcc1-69a0-4ba3-948b-4d10e379a60f

📥 Commits

Reviewing files that changed from the base of the PR and between 4ed192a and 80d9218.

📒 Files selected for processing (1)
  • docs/reference/troubleshooting.mdx
✅ Files skipped from review due to trivial changes (1)
  • docs/reference/troubleshooting.mdx

📝 Walkthrough

Walkthrough

Adds a slug suggestion helper and integrates it into sandbox name validation to emit "Try: " guidance; introduces a missing-NVIDIA-API-key helper used in non-interactive onboarding to print copy-paste export NVIDIA_API_KEY=... guidance and provider help URL. Tests and docs updated.

Changes

Copy-paste recovery commands for onboard errors

Layer / File(s) Summary
Slug suggestion pattern and implementation
src/lib/name-validation.ts
NAME_VALID_PATTERN regex added. suggestNameSlug(value) normalizes input to a lowercase, hyphenated slug, collapses/trims hyphens, prefixes with s- if it would start with a digit, truncates to NAME_MAX_LENGTH, trims trailing invalid chars, and returns null when already-valid or unrecoverable.
Validation guidance with suggestions
src/lib/name-validation.ts
getNameValidationGuidance now calls suggestNameSlug(value) and appends a Try: <suggestion> line to guidance messages when a suggestion is available.
Validation and slug suggestion test coverage
test/onboard-sandbox-name.test.ts
Test imports updated to include suggestNameSlug. Existing sandbox-name validation tests expect the extra Try: bad-name suggestion. New describe("suggestNameSlug", ...) tests cover lowercasing, illegal-character replacement with hyphens, hyphen collapsing/trimming, numeric-start prefixing, truncation to max length, and null results for valid/unrecoverable inputs; boundary test updated to expect Try: myassistant.
Missing NVIDIA API key helper
src/lib/onboard/missing-credential-hints.ts
Adds logMissingNvidiaApiKeyHelp(helpUrl) which writes missing-key guidance to stderr and emits the provided help URL when present.
Onboard import and non-interactive error wiring
src/lib/onboard.ts
Imports logMissingNvidiaApiKeyHelp and uses it when resolveProviderCredential("NVIDIA_API_KEY") fails in non-interactive mode for the NVIDIA provider, emitting the provider helpUrl and concrete export guidance.
Non-interactive selection test for missing credentials
test/onboard-selection.test.ts
Adds a test that forces non-interactive mode, unsets NVIDIA_API_KEY/NEMOCLAW_PROVIDER_KEY, runs setupNim(null), and asserts exit code 1 plus stderr/stdout containing the export command suggestion and the NVIDIA help URL.
Runner name validation integration
src/lib/runner.ts
validateName() now uses the shared NAME_VALID_PATTERN import for format validation.
Docs: commands & troubleshooting
docs/reference/commands.mdx, docs/reference/troubleshooting.mdx
Documentation updated to state invalid sandbox names are rejected and that the CLI/wizard prints a Try: <suggested-slug> recovery line when it can derive one; includes an example for an uppercased input.

Sequence Diagram(s)

sequenceDiagram
  participant UserCLI
  participant setupNim
  participant CredentialResolver
  participant logMissingNvidiaApiKeyHelp
  participant ProcessExit
  UserCLI->>setupNim: run non-interactive onboard
  setupNim->>CredentialResolver: resolve NVIDIA_API_KEY
  CredentialResolver-->>setupNim: null (missing)
  setupNim->>logMissingNvidiaApiKeyHelp: call with provider helpUrl
  logMissingNvidiaApiKeyHelp-->>UserCLI: stderr lines (requirement + export example + helpUrl)
  setupNim->>ProcessExit: exit(1)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested labels

NemoClaw CLI

Suggested reviewers

  • ericksoa
  • cv

Poem

🐇 I found a name all mixed and wild,
I nudged the hyphens, tamed the child.
I prefixed digits, trimmed the end,
A copy-paste hint for every friend.
Hop on—your CLI is fixed, my friend!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 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 objective: adding copy-paste recovery hints to onboard error paths, which aligns with the primary changes across all modified files.
Linked Issues check ✅ Passed The PR comprehensively implements both Sub-C (sandbox name validation with 'Try:' suggestions) and Sub-D (missing NVIDIA_API_KEY with 'export' command hints) requirements from issue #4425.
Out of Scope Changes check ✅ Passed All changes are directly aligned with the stated objectives: slug suggestion helper, validation guidance enhancement, credential error handling, and refactored shared pattern constant.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/4425-cli-recovery-hints

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

github-actions Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: onboard-negative-paths-e2e, cloud-onboard-e2e
Optional E2E: docs-validation-e2e

Dispatch hint: onboard-negative-paths-e2e,cloud-onboard-e2e

Auto-dispatched E2E: onboard-negative-paths-e2e, cloud-onboard-e2e via nightly-e2e.yaml at c719424c014c27e6be7dd259bc59239fbec99c68nightly run

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required E2E

  • onboard-negative-paths-e2e (medium): Closest existing E2E coverage for non-interactive onboarding validation failures, NVIDIA API key validation, and ensuring user-facing failures do not produce stack traces. The PR changes exactly this onboarding/credential negative-path surface.
  • cloud-onboard-e2e (medium): Runs a real non-interactive NVIDIA Endpoints onboard flow with a valid lowercase sandbox name, validating that the name-validation refactor and missing-credential helper import do not regress the primary cloud onboarding path.

Optional E2E

  • docs-validation-e2e (low): Useful because commands and troubleshooting docs changed; validates generated/docs parity and documentation checks, but it is adjacent to the runtime onboarding change rather than the main merge-blocking risk.

New E2E recommendations

  • onboarding validation (high): Existing onboard-negative-paths E2E covers invalid NVIDIA key format and port conflicts, but not the new invalid sandbox name rejection with a standalone Try: myassistant recovery line at the CLI boundary.
    • Suggested test: Add a case to test/e2e/test-onboard-negative-paths.sh that runs nemoclaw onboard --non-interactive --name MyAssistant, asserts exit 1, asserts Invalid sandbox name, asserts a standalone Try: myassistant, and asserts no stack trace or sandbox/gateway side effects.
  • credential recovery hints (high): The PR adds copy-paste missing NVIDIA_API_KEY recovery output, but existing E2E only covers invalid key format, not absent key behavior in non-interactive NVIDIA Endpoints onboarding.
    • Suggested test: Extend test/e2e/test-onboard-negative-paths.sh with a no-credential non-interactive NVIDIA provider case that unsets NVIDIA_API_KEY and NEMOCLAW_PROVIDER_KEY, asserts exit 1 before prompting, and verifies Set with: plus export NVIDIA_API_KEY=nvapi-... and the help URL are printed.

Dispatch hint

  • Workflow: nightly-e2e.yaml
  • jobs input: onboard-negative-paths-e2e,cloud-onboard-e2e

@github-actions

github-actions Bot commented May 28, 2026

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

github-actions Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor

Findings: 0 needs attention, 0 worth checking, 0 nice ideas
Since last review: 0 prior items resolved, 0 still apply, 0 new items found

Workflow run details

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

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26568327452
Target ref: 31149367786f2ba8b1ca05547706e38d86581fd9
Workflow ref: main
Requested jobs: cloud-onboard-e2e,onboard-negative-paths-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ✅ success
onboard-negative-paths-e2e ✅ success

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

Actionable comments posted: 0

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26569135616
Target ref: bb712df22d89f81aa0df314564e8781260a22822
Workflow ref: main
Requested jobs: onboard-negative-paths-e2e,cloud-onboard-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ✅ success
onboard-negative-paths-e2e ✅ success

…ery hint

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@github-actions

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
docs/reference/commands.mdx (1)

160-160: ⚡ Quick win

Use active voice and split into separate sentences.

This line has two style guide violations:

  1. Passive voice: "Names that do not match these rules are rejected" should use active voice.
  2. Multiple clauses on one line: The two clauses separated by a semicolon should be split into separate lines for better diff readability.
📝 Suggested rewrite
-Names that do not match these rules are rejected; the CLI prints a `Try: <suggested-slug>` recovery line whenever it can derive a valid lowercase, hyphen-separated form from the input (for example, `MyAssistant` produces `Try: myassistant`).
+The CLI rejects names that do not match these rules.
+The CLI prints a `Try: <suggested-slug>` recovery line whenever it can derive a valid lowercase, hyphen-separated form from the input (for example, `MyAssistant` produces `Try: myassistant`).

As per coding guidelines, active voice is required, and one sentence per line in source makes diffs readable.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/reference/commands.mdx` at line 160, Rewrite the passive sentence "Names
that do not match these rules are rejected; the CLI prints a `Try:
<suggested-slug>` recovery line whenever it can derive a valid lowercase,
hyphen-separated form from the input (for example, `MyAssistant` produces `Try:
myassistant`)." into active voice and split it into two separate
sentences/lines: one that states the action (e.g., "The CLI rejects names that
do not match these rules.") and a second that explains the recovery behavior and
example using the existing `Try: <suggested-slug>` text and `MyAssistant` ->
`myassistant` example.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@docs/reference/commands.mdx`:
- Line 160: Rewrite the passive sentence "Names that do not match these rules
are rejected; the CLI prints a `Try: <suggested-slug>` recovery line whenever it
can derive a valid lowercase, hyphen-separated form from the input (for example,
`MyAssistant` produces `Try: myassistant`)." into active voice and split it into
two separate sentences/lines: one that states the action (e.g., "The CLI rejects
names that do not match these rules.") and a second that explains the recovery
behavior and example using the existing `Try: <suggested-slug>` text and
`MyAssistant` -> `myassistant` example.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 3218a6fd-5f09-4be2-b77c-3bedad626de5

📥 Commits

Reviewing files that changed from the base of the PR and between bb712df and 2cd3665.

📒 Files selected for processing (2)
  • docs/reference/commands.mdx
  • docs/reference/troubleshooting.mdx
✅ Files skipped from review due to trivial changes (1)
  • docs/reference/troubleshooting.mdx

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26571628162
Target ref: 2cd366566d9ca71fbd854f4c7390c5fd6224ea2c
Workflow ref: main
Requested jobs: onboard-negative-paths-e2e
Summary: 1 passed, 0 failed, 0 skipped

Job Result
onboard-negative-paths-e2e ✅ success

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

Actionable comments posted: 0

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26572266320
Target ref: f8b6404b11c7b6f310d902c7180812b21ab4d4ca
Workflow ref: main
Requested jobs: onboard-negative-paths-e2e
Summary: 1 passed, 0 failed, 0 skipped

Job Result
onboard-negative-paths-e2e ✅ success

…dy-valid input as no-op

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

Actionable comments posted: 0

1 similar comment
@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

Actionable comments posted: 0

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ❌ Some jobs failed

Run: 26572952389
Target ref: 4ed192a37892ee6c2e73f472e33408277e4408c1
Workflow ref: main
Requested jobs: onboard-negative-paths-e2e
Summary: 0 passed, 1 failed, 0 skipped

Job Result
onboard-negative-paths-e2e ❌ failure

Failed jobs: onboard-negative-paths-e2e. Check run artifacts for logs.

Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

Actionable comments posted: 0

@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26573530924
Target ref: 80d92189290b884d56b525900b07fc5a242b3341
Workflow ref: main
Requested jobs: onboard-negative-paths-e2e
Summary: 1 passed, 0 failed, 0 skipped

Job Result
onboard-negative-paths-e2e ✅ success

@ericksoa ericksoa added v0.0.54 Release target and removed v0.0.55 labels May 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Selective E2E Results — ✅ All requested jobs passed

Run: 26587915047
Target ref: c719424c014c27e6be7dd259bc59239fbec99c68
Workflow ref: main
Requested jobs: onboard-negative-paths-e2e,cloud-onboard-e2e
Summary: 2 passed, 0 failed, 0 skipped

Job Result
cloud-onboard-e2e ✅ success
onboard-negative-paths-e2e ✅ success

cjagwani
cjagwani previously approved these changes May 28, 2026

@cjagwani cjagwani left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm. fixes #4425, scope is appropriately minimal:

  • suggestNameSlug() covers every degenerate input (already-valid→null, empty→null, leading non-letter prefixed s-, truncation re-trims trailing hyphen)
  • logMissingNvidiaApiKeyHelp() is 13 lines, just emits the recovery block
  • 235 lines of test coverage, both extractions covered
  • no scope creep into adjacent error paths

@cjagwani cjagwani dismissed their stale review May 28, 2026 17:14

dismissed — posted without maintainer authorization

@ericksoa ericksoa left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed adversarially against the linked recovery-hint issue and the current PR head.

This keeps the fix narrowly scoped: name validation remains strict while adding actionable Try: guidance, the non-interactive NVIDIA credential path still exits fail-closed while adding a copy-paste recovery command, and the tests cover both helper behavior and CLI-boundary failure paths. Focused local validation passed (build:cli, typecheck:cli, targeted vitest, docs strict, diff check), and the live checks/advisors are green on this head.

@ericksoa ericksoa merged commit 6a49231 into main May 28, 2026
30 checks passed
@ericksoa ericksoa deleted the fix/4425-cli-recovery-hints branch May 28, 2026 17:24
@miyoungc miyoungc mentioned this pull request May 29, 2026
12 tasks
miyoungc added a commit that referenced this pull request May 29, 2026
## Summary
Refreshes the NemoClaw documentation for the v0.0.54 release and
regenerates user skills from the Fern MDX source. Also keeps the Fern
CLI pin current so local docs checks use the upgraded Fern version.

## Related Issue
<!-- No single related issue. This is release-prep documentation
catch-up. -->

## Changes
- #4403 -> `docs/manage-sandboxes/messaging-channels.mdx`,
`docs/reference/commands.mdx`, `docs/about/release-notes.mdx`: Document
Telegram, Discord, and Slack post-rebuild bridge verification and
summarize channel activation fixes.
- #4222 -> `docs/about/release-notes.mdx`: Include Slack generated
channel enablement in the v0.0.54 messaging summary.
- #4346 -> `docs/get-started/windows-preparation.mdx`,
`docs/about/release-notes.mdx`: Document safer Windows bootstrap
behavior for Ubuntu first-run and Docker Desktop WSL integration.
- #4416 -> `docs/inference/use-local-inference.mdx`,
`docs/about/release-notes.mdx`: Document the Docker Desktop WSL
requirement for Windows-host Ollama.
- #4442 -> `docs/about/release-notes.mdx`: Summarize the optional
NemoHermes native web dashboard and related environment variables.
- #4426 -> `docs/about/release-notes.mdx`: Summarize copy-paste recovery
hints for invalid sandbox names and missing NVIDIA API keys.
- #4459 -> `docs/about/release-notes.mdx`: Summarize the Linuxbrew
prefix fix for sandbox Homebrew usage.
- #4450 -> `docs/about/release-notes.mdx`: Summarize `/nemoclaw` slash
command startup activation.
- #4468 -> `docs/about/release-notes.mdx`: Summarize scope-upgrade
approval recovery.
- #4325 -> `docs/about/release-notes.mdx`: Summarize the narrowed
`web_fetch` host-gateway allowance.
- #4474 -> `docs/about/release-notes.mdx`: Summarize Hermes Provider
smoke-check behavior for OAuth versus Nous API key setup.
- Refresh generated `.agents/skills/nemoclaw-user-*` references from
`docs/` and update `fern/fern.config.json` to Fern `5.41.2`.

## 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
<!-- Check each item you ran and confirmed. Leave unchecked items you
skipped. Doc-only changes do not require npm test unless you ran it. -->
- [ ] `npx prek run --all-files` passes
- [ ] `npm test` passes
- [ ] Tests added or updated for new or changed behavior
- [x] No secrets, API keys, or credentials committed
- [x] Docs updated for user-facing behavior changes
- [ ] `npm run docs` builds without warnings (doc changes only)
- [x] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

---
<!-- DCO sign-off required by CI. Run: git config user.name && git
config user.email -->
Signed-off-by: Miyoung Choi <miyoungc@nvidia.com>

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

* **New Features**
  * Optional NemoHermes native web dashboard (configurable port and TUI)
* GPU memory cleanup now unloads Ollama models when switching providers
or stopping services

* **Bug Fixes**
  * Improved sandbox name validation with suggested slug recovery
* Windows-host Ollama now requires Docker Desktop WSL integration and
exits with remediation guidance when unsupported

* **Documentation**
* Clarified quickstart/onboard flow, installer TTY/non‑TTY guidance,
Hermes Docker prerequisites, sandbox hardening, and channels add rebuild
checks

<!-- 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/4539?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 -->
@wscurran wscurran added bug-fix PR fixes a bug or regression and removed fix labels Jun 3, 2026
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 v0.0.54 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Ubuntu 24.04][DGX Station][CLI&UX] nemoclaw error messages lack copy-paste recovery commands (sandbox-name validation + missing NVIDIA_API_KEY)

4 participants