docs: document WeChat channel and mark WeChat/WhatsApp experimental#4276
Conversation
Restore the WeChat channel docs that were removed via the docs-skip list, mark both WeChat and WhatsApp as experimental wherever they are visible, re-document the host-side WeChat QR onboarding flow and `NEMOCLAW_WECHAT_QUIET` env var, and tighten v0.0.50/v0.0.51 release notes. - docs/.docs-skip: drop wechat / WeChat / WECHAT skip entries. - docs/manage-sandboxes/messaging-channels.mdx: add experimental warning, document iLink Bot API personal-WeChat (bot_type=3) integration, the host-side QR handshake and `<sandbox>-wechat-bridge` OpenShell provider, and channels add/remove/stop/start behavior for WeChat. - docs/network-policy/integration-policy-examples.mdx, docs/network-policy/customize-network-policy.mdx, docs/reference/network-policies.mdx: list `wechat` preset and Open-tier coverage with experimental tags for WeChat and WhatsApp. - docs/reference/commands.mdx: add WeChat to channels add/remove/stop, document the host-side QR login mode, and surface `NEMOCLAW_WECHAT_QUIET`. - docs/reference/troubleshooting.mdx, docs/get-started/quickstart.mdx: include WeChat in command syntax and wizard description. - ci/env-var-doc-allowlist.json: remove `NEMOCLAW_WECHAT_QUIET` now that it is publicly documented. - docs/about/release-notes.mdx: move bullets that landed in v0.0.51 (managed vLLM menu restoration, sudo-free Ollama install path, merged sandbox logs) into the v0.0.51 entry; rewrite the v0.0.50 DGX Spark bullet to focus on the CPU-fallback diagnostic and systemd override. Signed-off-by: Miyoung Choi <miyoungc@nvidia.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
📝 WalkthroughWalkthroughAdds WeChat and WhatsApp messaging channel documentation across guides, CLI reference, network policy docs, and troubleshooting; removes WeChat entries from docs-skip lists and deletes the NEMOCLAW_WECHAT_QUIET allowlist entry. ChangesWeChat Messaging Channel Documentation
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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
ESLint skipped: no ESLint configuration detected in root package.json. To enable, add Comment |
|
🌿 Preview your docs: https://nvidia-preview-pr-4276.docs.buildwithfern.com/nemoclaw |
E2E Advisor RecommendationRequired E2E: None Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
|
E2E Scenario Advisor RecommendationRequired scenario E2E: None Full scenario advisor summaryE2E Scenario AdvisorBase: Required scenario E2E
Optional scenario E2E
Relevant changed files
|
PR Review AdvisorFindings: 0 needs attention, 1 worth checking, 0 nice ideas Review findings🛠️ Needs attention
🔎 Worth checking
🌱 Nice ideas
Since last review detailsCurrent findings:
This is an automated advisory review. A human maintainer must make the final merge decision. |
There was a problem hiding this comment.
🧹 Nitpick comments (4)
docs/get-started/quickstart.mdx (1)
280-280: ⚡ Quick winSplit into separate lines per the style guide.
This line contains two independent clauses joined by a semicolon. The style guide requires one sentence per line to keep diffs readable.
♻️ Proposed fix to split the sentence
-WeChat and WhatsApp are experimental; review [Messaging Channels](/manage-sandboxes/messaging-channels) before enabling them. +WeChat and WhatsApp are experimental. +Review [Messaging Channels](/manage-sandboxes/messaging-channels) before enabling them.As per coding guidelines: "One sentence per line in source (makes diffs readable). Flag paragraphs where multiple sentences appear on the same line."
🤖 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/get-started/quickstart.mdx` at line 280, Split the single line containing "WeChat and WhatsApp are experimental; review [Messaging Channels](/manage-sandboxes/messaging-channels) before enabling them." into two separate lines, one per sentence: "WeChat and WhatsApp are experimental." and "Review [Messaging Channels](/manage-sandboxes/messaging-channels) before enabling them." to comply with the one-sentence-per-line style guide in quickstart.mdx.docs/reference/troubleshooting.mdx (1)
781-781: ⚡ Quick winSplit into separate lines per the style guide.
This line contains two independent clauses joined by a semicolon. The style guide requires one sentence per line to keep diffs readable.
♻️ Proposed fix to split the sentence
-WeChat captures its bot token through a host-side QR scan during `nemoclaw onboard` or `channels add wechat`; you scan the iLink QR from WeChat on your phone and NemoClaw registers the captured token with the OpenShell gateway. +WeChat captures its bot token through a host-side QR scan during `nemoclaw onboard` or `channels add wechat`. +You scan the iLink QR from WeChat on your phone and NemoClaw registers the captured token with the OpenShell gateway.As per coding guidelines: "One sentence per line in source (makes diffs readable). Flag paragraphs where multiple sentences appear on the same line."
🤖 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/troubleshooting.mdx` at line 781, The sentence "WeChat captures its bot token through a host-side QR scan during `nemoclaw onboard` or `channels add wechat`; you scan the iLink QR from WeChat on your phone and NemoClaw registers the captured token with the OpenShell gateway." contains two independent clauses joined by a semicolon—split this into two separate sentences and place each sentence on its own line in the docs (locate the line by searching for the phrase and the commands `nemoclaw onboard` / `channels add wechat`), e.g., end the first sentence after "channels add wechat" and start a new line with "You scan..." so each sentence is on its own source line per the style guide.docs/manage-sandboxes/messaging-channels.mdx (1)
15-15: ⚡ Quick winSplit into separate lines per the style guide.
This line contains three independent clauses joined by semicolons. The style guide requires one sentence per line to keep diffs readable.
♻️ Proposed fix to split the sentence
-For token-based channels, NemoClaw registers credentials with OpenShell providers; WeChat captures a token through a host-side QR scan during onboarding; WhatsApp pairs inside the sandbox via QR scan and intentionally stores mutable session state there. +For token-based channels, NemoClaw registers credentials with OpenShell providers. +WeChat captures a token through a host-side QR scan during onboarding. +WhatsApp pairs inside the sandbox via QR scan and intentionally stores mutable session state there.As per coding guidelines: "One sentence per line in source (makes diffs readable). Flag paragraphs where multiple sentences appear on the same line."
🤖 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/manage-sandboxes/messaging-channels.mdx` at line 15, The single line contains three independent clauses; split it into three separate lines so each sentence stands alone: one line for "For token-based channels, NemoClaw registers credentials with OpenShell providers", one line for "WeChat captures a token through a host-side QR scan during onboarding", and one line for "WhatsApp pairs inside the sandbox via QR scan and intentionally stores mutable session state", preserving punctuation and capitalization.docs/reference/commands.mdx (1)
671-671: ⚡ Quick winSplit into separate lines for readability.
Line 671 contains two sentences separated by a semicolon.
The style guide requires one sentence per line to make diffs readable.📝 Proposed fix
- The scanning operator's WeChat user ID is added to `WECHAT_ALLOWED_IDS` automatically; supply additional comma-separated IDs to authorize more DM senders. + The scanning operator's WeChat user ID is added to `WECHAT_ALLOWED_IDS` automatically. + Supply additional comma-separated IDs to authorize more DM senders.As per coding guidelines: "One sentence per line in source (makes diffs readable). Flag paragraphs where multiple sentences appear on the same line."
🤖 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 671, The line containing the two sentences about WECHAT_ALLOWED_IDS needs to be split into separate lines (one sentence per line) to follow the style guide; locate the sentence mentioning "The scanning operator's WeChat user ID is added to `WECHAT_ALLOWED_IDS` automatically" and the following clause "supply additional comma-separated IDs to authorize more DM senders" and place each sentence on its own line so diffs remain readable and adhere to the one-sentence-per-line rule.
🤖 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/get-started/quickstart.mdx`:
- Line 280: Split the single line containing "WeChat and WhatsApp are
experimental; review [Messaging Channels](/manage-sandboxes/messaging-channels)
before enabling them." into two separate lines, one per sentence: "WeChat and
WhatsApp are experimental." and "Review [Messaging
Channels](/manage-sandboxes/messaging-channels) before enabling them." to comply
with the one-sentence-per-line style guide in quickstart.mdx.
In `@docs/manage-sandboxes/messaging-channels.mdx`:
- Line 15: The single line contains three independent clauses; split it into
three separate lines so each sentence stands alone: one line for "For
token-based channels, NemoClaw registers credentials with OpenShell providers",
one line for "WeChat captures a token through a host-side QR scan during
onboarding", and one line for "WhatsApp pairs inside the sandbox via QR scan and
intentionally stores mutable session state", preserving punctuation and
capitalization.
In `@docs/reference/commands.mdx`:
- Line 671: The line containing the two sentences about WECHAT_ALLOWED_IDS needs
to be split into separate lines (one sentence per line) to follow the style
guide; locate the sentence mentioning "The scanning operator's WeChat user ID is
added to `WECHAT_ALLOWED_IDS` automatically" and the following clause "supply
additional comma-separated IDs to authorize more DM senders" and place each
sentence on its own line so diffs remain readable and adhere to the
one-sentence-per-line rule.
In `@docs/reference/troubleshooting.mdx`:
- Line 781: The sentence "WeChat captures its bot token through a host-side QR
scan during `nemoclaw onboard` or `channels add wechat`; you scan the iLink QR
from WeChat on your phone and NemoClaw registers the captured token with the
OpenShell gateway." contains two independent clauses joined by a semicolon—split
this into two separate sentences and place each sentence on its own line in the
docs (locate the line by searching for the phrase and the commands `nemoclaw
onboard` / `channels add wechat`), e.g., end the first sentence after "channels
add wechat" and start a new line with "You scan..." so each sentence is on its
own source line per the style guide.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 6f3a1c71-7387-48ed-8cd3-0fbc55f573d1
📒 Files selected for processing (10)
ci/env-var-doc-allowlist.jsondocs/.docs-skipdocs/about/release-notes.mdxdocs/get-started/quickstart.mdxdocs/manage-sandboxes/messaging-channels.mdxdocs/network-policy/customize-network-policy.mdxdocs/network-policy/integration-policy-examples.mdxdocs/reference/commands.mdxdocs/reference/network-policies.mdxdocs/reference/troubleshooting.mdx
💤 Files with no reviewable changes (2)
- ci/env-var-doc-allowlist.json
- docs/.docs-skip
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
There was a problem hiding this comment.
🧹 Nitpick comments (2)
docs/reference/commands.mdx (2)
671-671: ⚡ Quick winUse active voice.
The sentence uses passive voice ("is added"). As per coding guidelines, active voice is required for all documentation.
Suggested revision
- The scanning operator's WeChat user ID is added to `WECHAT_ALLOWED_IDS` automatically. + NemoClaw automatically adds the scanning operator's WeChat user ID to `WECHAT_ALLOWED_IDS`.As per coding guidelines: "Active voice required. Flag passive constructions."
🤖 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 671, Replace the passive sentence "The scanning operator's WeChat user ID is added to `WECHAT_ALLOWED_IDS` automatically." with an active-voice phrasing; update the line containing WECHAT_ALLOWED_IDS / "scanning operator's WeChat user ID" to read something like "The system automatically adds the scanning operator's WeChat user ID to WECHAT_ALLOWED_IDS." to use active voice.
1314-1314: ⚡ Quick winSplit sentences to separate lines.
The table cell contains two sentences on the same line. As per coding guidelines, documentation should use one sentence per line in source to make diffs readable.
Suggested revision
Consider restructuring the table cell content to place each sentence on its own line:
-| `NEMOCLAW_WECHAT_QUIET` | `1` to enable | Silences the `[wechat]` diagnostic lines printed during the host-side WeChat QR login (poll status, IDC redirects, swallowed gateway errors). Visible by default while the experimental WeChat path stabilizes, so set `1` once the flow is reliable in your environment. | +| `NEMOCLAW_WECHAT_QUIET` | `1` to enable | Silences the `[wechat]` diagnostic lines printed during the host-side WeChat QR login (poll status, IDC redirects, swallowed gateway errors).<br/>Visible by default while the experimental WeChat path stabilizes, so set `1` once the flow is reliable in your environment. |Note: Using
<br/>in MDX preserves the table structure while keeping sentences on separate source lines.As per coding guidelines: "One sentence per line in source (makes diffs readable). Flag paragraphs where multiple sentences appear on the same line."
🤖 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 1314, The table cell for the environment variable `NEMOCLAW_WECHAT_QUIET` currently contains two sentences on one source line; edit the table cell in docs/reference/commands.mdx so each sentence sits on its own source line (use a line break like <br/> inside the MDX table cell to preserve the table layout) so the first sentence "Silences the `[wechat]` diagnostic lines printed during the host-side WeChat QR login (poll status, IDC redirects, swallowed gateway errors)." is on its own line and the second sentence "Visible by default while the experimental WeChat path stabilizes, so set `1` once the flow is reliable in your environment." is on the next line.
🤖 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 671: Replace the passive sentence "The scanning operator's WeChat user ID
is added to `WECHAT_ALLOWED_IDS` automatically." with an active-voice phrasing;
update the line containing WECHAT_ALLOWED_IDS / "scanning operator's WeChat user
ID" to read something like "The system automatically adds the scanning
operator's WeChat user ID to WECHAT_ALLOWED_IDS." to use active voice.
- Line 1314: The table cell for the environment variable `NEMOCLAW_WECHAT_QUIET`
currently contains two sentences on one source line; edit the table cell in
docs/reference/commands.mdx so each sentence sits on its own source line (use a
line break like <br/> inside the MDX table cell to preserve the table layout) so
the first sentence "Silences the `[wechat]` diagnostic lines printed during the
host-side WeChat QR login (poll status, IDC redirects, swallowed gateway
errors)." is on its own line and the second sentence "Visible by default while
the experimental WeChat path stabilizes, so set `1` once the flow is reliable in
your environment." is on the next line.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: 91d2b67e-68fb-4004-b776-638803ff429c
📒 Files selected for processing (6)
docs/get-started/quickstart.mdxdocs/manage-sandboxes/messaging-channels.mdxdocs/network-policy/integration-policy-examples.mdxdocs/reference/commands.mdxdocs/reference/network-policies.mdxdocs/reference/troubleshooting.mdx
✅ Files skipped from review due to trivial changes (1)
- docs/get-started/quickstart.mdx
🚧 Files skipped from review as they are similar to previous changes (2)
- docs/network-policy/integration-policy-examples.mdx
- docs/reference/network-policies.mdx
Signed-off-by: Aaron Erickson <aerickson@nvidia.com>
ericksoa
left a comment
There was a problem hiding this comment.
Approved after docs review and follow-up commits. I fixed the WeChat non-interactive example to match the host-side QR flow and addressed the remaining docs nits. Local docs checks and the refreshed CI run passed.
## 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 --> [](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>
Summary
Restore the WeChat channel docs that had been removed via the
docs/.docs-skiplist, mark both WeChat and WhatsApp as experimental wherever they are user-visible, and re-document the host-side WeChat QR onboarding flow plus theNEMOCLAW_WECHAT_QUIETdiagnostic env var. Also tighten the v0.0.50/v0.0.51 release-notes entries so each bullet lands in the version that actually shipped it.Changes
docs/.docs-skip: dropwechat/WeChat/WECHATfromskip-featuresandskip-termsso the docs-to-skills gate stops suppressing WeChat content.docs/manage-sandboxes/messaging-channels.mdx: add an experimental warning for WeChat and WhatsApp; document Tencent's iLink Bot API personal-WeChat (bot_type=3) integration, the host-side QR handshake, the<sandbox>-wechat-bridgeOpenShell provider, theWECHAT_ACCOUNT_ID/WECHAT_BASE_URL/WECHAT_USER_ID/WECHAT_ALLOWED_IDSmetadata, the cached-token short-circuit onchannels add wechat, and thechannels remove/stop/start wechatlifecycle.docs/network-policy/integration-policy-examples.mdx,docs/network-policy/customize-network-policy.mdx,docs/reference/network-policies.mdx: list thewechatpreset and Open-tier coverage, with explicit experimental tags onwechatandwhatsapp.docs/reference/commands.mdx: extendchannels add/channels remove/channels stopto coverwechat, document the host-side QR login mode, mark WhatsApp's QR mode as experimental, and addNEMOCLAW_WECHAT_QUIETto the Onboarding Behavior Flags table.docs/reference/troubleshooting.mdx,docs/get-started/quickstart.mdx: includewechatin command syntax and the wizard channel list, calling out experimental status.ci/env-var-doc-allowlist.json: removeNEMOCLAW_WECHAT_QUIETnow that it is publicly documented indocs/reference/commands.mdx.docs/about/release-notes.mdx: move bullets that actually shipped in v0.0.51 (managed vLLM menu restoration on DGX Spark/Station, sudo-free user-local Linux Ollama install path, merged sandbox logs) into the v0.0.51 entry; rewrite the v0.0.50 DGX Spark bullet to focus on the CPU-fallback diagnostic andOLLAMA_LLM_LIBRARY=cuda_v13systemd override.Type of Change
Verification
npx prek run --all-filespassesnpm testpassesnpm run docsbuilds without warnings (doc changes only)Notes:
src/lib/inference/local.test.ts > resolveNonInteractiveOllamaModel respects unknown tags and downgrades known oversize ones(assertsqwen3.6:35bbut resolver now returnsnemotron-3-nano:30b) is unrelated to this doc-only change. The corresponding pre-commitTest (CLI)hook is skipped because nosrc//test//bin/files are touched.docs-to-skills.py --dry-run,npx tsx scripts/check-env-var-docs.ts, andnpm run docswere all run during preparation and reported no errors or skip-term violations.Signed-off-by: Miyoung Choi miyoungc@nvidia.com
Summary by CodeRabbit
New Features
Documentation
Chores