feat(channels): canonicalise channel name and hint missing preset#3448
Conversation
`channels add` and `channels remove` previously echoed the raw `channelArg` back into log lines, registry writes, and rebuild reasons, so `channels add Telegram` and `channels add telegram` left mismatched strings behind. Lowercase + trim the arg once after `getChannelDef` narrows it, then use the canonical form everywhere downstream. After a successful `channels add`, also print a one-line hint when the matching network preset (telegram/discord/slack) exists in the builtin list but is not yet applied to the sandbox, pointing the user at the `policy-add <channel>` command. Without the preset the rebuilt sandbox cannot reach the channel service, which is currently a silent failure mode. Signed-off-by: Tinson Lai <tinsonl@nvidia.com>
|
Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually. Contributors can view more details about this message here. |
|
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 as they are similar to previous changes (1)
📝 WalkthroughWalkthroughChannel arguments are now normalized to lowercase canonical form across add and remove operations. The add flow includes a new preset hint that logs policy-add instructions when a matching network preset exists but isn't applied. Test coverage validates mixed-case channel names. ChangesChannel argument normalization
🎯 2 (Simple) | ⏱️ ~10 minutes
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 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 |
E2E Advisor RecommendationRequired E2E: Dispatch hint: Auto-dispatched E2E: Full advisor summaryE2E Recommendation AdvisorBase: Required E2E
Optional E2E
New E2E recommendations
Dispatch hint
|
Selective E2E Results — ✅ All requested jobs passedRun: 25876106446
|
## Summary Refreshes the NemoClaw documentation for the local `main` changes included in the 0.0.42 release. The update adds release notes, updates the affected user-facing setup and troubleshooting pages, bumps docs metadata to 0.0.42, and regenerates the matching user skills. ## Changes - #3537 -> `docs/reference/commands.md`, `docs/reference/troubleshooting.md`: Documented host-level status fields, cloudflared state-specific recovery hints, and Local Ollama auth proxy status diagnostics. - #3454 -> `docs/get-started/prerequisites.md`, `docs/get-started/quickstart.md`: Documented macOS Docker-driver onboarding and removed the expectation that standard macOS setup needs a VM driver helper. - #3514 -> `docs/inference/use-local-inference.md`: Documented compatible-endpoint retry behavior for reasoning-only smoke responses. - #3448 -> `docs/reference/commands.md`, `docs/manage-sandboxes/messaging-channels.md`: Documented canonical channel names and policy preset hints after `channels add`. - #3520 -> `docs/about/release-notes.md`: Captured clearer GPU recovery and uninstall wording in the 0.0.42 release notes. - #3313 -> `docs/get-started/quickstart.md`, `docs/reference/troubleshooting.md`: Documented stronger dashboard port detection and rollback when a forward cannot start. - #3502 -> `docs/about/release-notes.md`: Captured batched onboarding policy preset application in the 0.0.42 release notes. - #3505 -> `docs/reference/troubleshooting.md`: Documented the top-level Colima socket path. - #3421 -> `docs/about/release-notes.md`: Captured idempotent installer shim logging in the 0.0.42 release notes. - Updated `docs/project.json`, `docs/versions1.json`, and regenerated `.agents/skills/nemoclaw-user-*` outputs. ## 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 - [ ] `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 - [x] `make 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) --- Signed-off-by: Miyoung Choi <miyoungc@nvidia.com> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Release Notes - v0.0.42 * **Documentation** * Enhanced macOS onboarding guidance for Docker gateway setup * Improved dashboard port conflict handling with automatic rollback * Better local Ollama inference diagnostics and authentication proxy checks * Clarified status command output and recovery procedures * Refined messaging channel setup documentation * **Chores** * Version bump to 0.0.42 <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/NVIDIA/NemoClaw/pull/3540) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Summary
Two follow-up UX improvements to
channels add/channels removethat were originally part of #3392 but are independent of WhatsApp and so can land first: lowercase + trim the channel name once after lookup so the canonical form is used everywhere downstream, and after a successful add, print a one-line hint when the matching network preset exists but has not been applied yet.Related Issue
Carved out of #3392 to keep the WhatsApp PR focused on the QR-paired flow.
Changes
src/lib/actions/sandbox/policy-channel.ts:addSandboxChannelandremoveSandboxChannelcomputeconst canonical = channelArg.trim().toLowerCase();right aftergetChannelDefresolves the channel, then usecanonicalin every downstream log line, registry write, gateway provider name, and rebuild reason. Previouslychannels add Telegramandchannels add telegramproduced mismatched strings.maybeHintPolicyPresetForChannelhelper. Runs after the gateway upsert inaddSandboxChannel. When a builtin preset with the same name as the channel exists (policies.listPresets()) but is not inpolicies.getAppliedPresets(sandboxName), print a one-line hint pointing atpolicy-add <channel>. Without the preset the rebuilt sandbox cannot reach the channel service, which is currently a silent failure mode.test/cli.test.ts: extend the existingchannels mutation dry-run paths dispatch through ocliftest with two assertions thatchannels add Telegram --dry-runandchannels remove Telegram --dry-runprint the lowercased'telegram'in the dry-run message.No behaviour change for the gateway/registry data path; canonicalisation only affects user-visible strings and the bridge provider name (which
getChannelDefalready canonicalised internally for lookup).Type of Change
Verification
npx prek run --all-filespassesnpm testpassesmake docsbuilds without warnings (doc changes only)Signed-off-by: Tinson Lai tinsonl@nvidia.com
Summary by CodeRabbit
Bug Fixes
New Features
Tests