Skip to content

fix(messaging): disable Teams streaming by default#5995

Merged
cv merged 4 commits into
mainfrom
fix/5851-msteams-streaming-off
Jun 30, 2026
Merged

fix(messaging): disable Teams streaming by default#5995
cv merged 4 commits into
mainfrom
fix/5851-msteams-streaming-off

Conversation

@sandl99

@sandl99 sandl99 commented Jun 29, 2026

Copy link
Copy Markdown
Collaborator

Summary

This PR renders OpenClaw Microsoft Teams channels with channels.msteams.streaming.mode: "off" by default. The change avoids the native Teams streaming preview/final collapse path while OpenClaw Teams duplicate-delivery issues remain open upstream.

Related Issue

Refs #5851

Changes

  • Add streaming: { mode: "off" } to the OpenClaw Teams channel fragment rendered by the messaging manifest.
  • Assert the default in the built-in manifest and manifest compiler tests.

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)

Quality Gates

  • Tests added or updated for changed behavior
  • Existing tests cover changed behavior — justification:
  • Tests not applicable — justification:
  • Docs updated for user-facing behavior changes
  • Docs not applicable — justification: no docs changes remain in this PR.
  • Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging)
  • Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: messaging manifest-only config default; no credential, policy, or egress expansion; targeted manifest/compiler tests passed.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Verification

  • PR description includes the DCO sign-off declaration and every commit appears as Verified in GitHub
  • Git hooks passed during commit and push, or npx prek run --from-ref main --to-ref HEAD passes
  • Targeted tests pass for changed behavior
  • Full npm test passes (broad runtime changes only)
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • 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)

Verification run:

  • ./node_modules/.bin/vitest run src/lib/messaging/channels/manifests.test.ts src/lib/messaging/compiler/manifest-compiler.test.ts
  • npm run typecheck:cli
  • git diff --check
  • Pre-push TypeScript hook passed.
  • The docs-removal cleanup commit passed its staged-file commit hooks.

Note: the original pre-commit Test (CLI) hook did not pass locally because unrelated environment-sensitive tests failed outside this diff, including src/lib/actions/sandbox/snapshot.test.ts, src/lib/agent/runtime-recovery-preload.test.ts, test/langchain-deepagents-code-image.test.ts, and test/sandbox-rlimit-hooks.test.ts.


Signed-off-by: San Dang sdang@nvidia.com
\n\n## Maintainer Runtime-Validation Rationale\n\nThis is a declarative OpenClaw configuration default. The manifest and compiler tests prove that the compiled agent render contains the exact channels.msteams.streaming.mode: "off" value consumed by the existing build applier. A live Teams delivery test requires external tenant credentials and webhook infrastructure, so it is not a deterministic PR gate; the E2E Advisor also marked live E2E as unnecessary for this change. The source comment records the compatibility boundary and removal condition.

Summary by CodeRabbit

  • Bug Fixes

    • Microsoft Teams messaging now uses final-message delivery in OpenClaw sandboxes, avoiding the upstream streaming preview/final behavior.
    • Updated Teams manifest output to include the correct streaming setting.
  • Documentation

    • Added a note explaining the Microsoft Teams streaming behavior for OpenClaw sandboxes.
  • Tests

    • Expanded Teams-related checks to verify the new streaming configuration appears in generated output.

Signed-off-by: San Dang <sdang@nvidia.com>
@sandl99 sandl99 self-assigned this Jun 29, 2026
@coderabbitai

coderabbitai Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

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: 2c607d95-08a4-4d0a-8f01-ddf7ee04075a

📥 Commits

Reviewing files that changed from the base of the PR and between a3ae353 and f1d56f4.

📒 Files selected for processing (2)
  • docs/manage-sandboxes/messaging-channels.mdx
  • src/lib/messaging/channels/teams/manifest.ts
✅ Files skipped from review due to trivial changes (1)
  • docs/manage-sandboxes/messaging-channels.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/lib/messaging/channels/teams/manifest.ts

📝 Walkthrough

Walkthrough

Adds streaming: { mode: "off" } to the Teams channel JSON fragment, updates manifest compiler and channel manifest tests to assert it, and adds a documentation note describing the default.

Changes

Teams Streaming Mode Default

Layer / File(s) Summary
Teams manifest streaming config, tests, and docs
src/lib/messaging/channels/teams/manifest.ts, src/lib/messaging/channels/manifests.test.ts, src/lib/messaging/compiler/manifest-compiler.test.ts, docs/manage-sandboxes/messaging-channels.mdx
Adds streaming.mode="off" to the OpenClaw Teams channel JSON fragment; asserts its presence in channel manifest and compiler tests; documents the default in the sandbox messaging guide.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

🚥 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 clearly and concisely describes the main change: disabling Microsoft Teams streaming by default in messaging.
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.
✨ 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/5851-msteams-streaming-off

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

@github-actions

Copy link
Copy Markdown
Contributor

@github-code-quality

github-code-quality Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in the branch is 96%. Coverage data for the branch is not yet available.

Show a code coverage summary of the most covered files.
File f1d56f4 +/-
nemoclaw/src/se...cret-scanner.ts 100%
nemoclaw/src/commands/slash.ts 100%
nemoclaw/src/li...bprocess-env.ts 100%
nemoclaw/src/bl...eprint/state.ts 98%
nemoclaw/src/onboard/config.ts 98%
nemoclaw/src/bl...int/snapshot.ts 97%
nemoclaw/src/bl...print/runner.ts 95%
nemoclaw/src/co...ration-state.ts 94%
nemoclaw/src/bl...ate-networks.ts 94%
nemoclaw/src/index.ts 94%

TypeScript / code-coverage/cli

The overall coverage in the branch is 68%. Coverage data for the branch is not yet available.

Show a code coverage summary of the most covered files.
File f1d56f4 +/-
src/lib/actions...all/run-plan.ts 80%
src/lib/state/o...oard-session.ts 79%
src/lib/actions...dbox/rebuild.ts 74%
src/lib/state/sandbox.ts 72%
src/lib/shields/index.ts 70%
src/lib/onboard/preflight.ts 69%
src/lib/actions...licy-channel.ts 60%
src/lib/onboard...er-gpu-patch.ts 59%
src/lib/policy/index.ts 52%
src/lib/onboard.ts 20%

Updated June 30, 2026 04:15 UTC
Code Coverage is in Public Preview. Learn more and provide us with your feedback.

@wscurran wscurran added area: messaging Messaging channels, bridges, manifests, or channel lifecycle bug-fix PR fixes a bug or regression integration: openclaw OpenClaw integration behavior labels Jun 29, 2026
@wscurran

Copy link
Copy Markdown
Contributor

@github-actions

github-actions Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor (Nemotron Ultra) — No blocking findings

Merge posture: No blocking advisor findings
Primary next action: Resolve or justify PRA-1: Multiple overlapping PRs modify same files — coordinate merge order.
Open items: 0 required · 1 warning · 1 suggestion · 2 test follow-ups
Since last review: 0 prior items resolved · 1 still applies · 0 new items found

Action checklist

  • PRA-1 Resolve or justify: Multiple overlapping PRs modify same files — coordinate merge order in src/lib/messaging/channels/teams/manifest.ts:1
  • PRA-T1 Add or justify test follow-up: Runtime validation
  • PRA-T2 Add or justify test follow-up: Add runtime validation test for Teams streaming-off behavior when E2E infrastructure available
  • PRA-2 In-scope improvement: Add runtime validation test for Teams streaming-off behavior when E2E infrastructure available in src/lib/messaging/channels/teams/manifest.ts:70

Findings index

ID Severity Category Location Required action
PRA-1 Resolve/justify architecture src/lib/messaging/channels/teams/manifest.ts:1 Coordinate with authors of overlapping PRs to sequence merges or rebase. Consider merging this PR first as it only adds a static config default with tests.
PRA-2 Improvement tests src/lib/messaging/channels/teams/manifest.ts:70 Add a targeted E2E test `should deliver Teams messages in final-only mode when streaming is off` when Teams tenant and webhook infrastructure are available in CI. Not blocking for this PR.
Review findings by urgency: 0 required fixes, 1 item to resolve/justify, 1 in-scope improvement

⚠️ Resolve or justify before merge

Investigate these in the current review; either fix them, explain why they are not applicable, or document the accepted risk.

PRA-1 Resolve/justify — Multiple overlapping PRs modify same files — coordinate merge order

💡 In-scope improvements

These are lower-risk, not throwaway. Prefer fixing them in this PR when they are local to changed code; defer only with rationale or a linked follow-up.

PRA-2 Improvement — Add runtime validation test for Teams streaming-off behavior when E2E infrastructure available

  • Location: src/lib/messaging/channels/teams/manifest.ts:70
  • Category: tests
  • Problem: The PR disables Teams streaming by default as a workaround for upstream duplicate/collapse bugs. Compile-time tests verify the config renders correctly, but runtime message delivery validation would confirm the workaround achieves its intent.
  • Impact: Low risk — the workaround is documented with a clear removal condition. Runtime test would provide confidence that final-only mode avoids the upstream duplication issue.
  • Suggested action: Add a targeted E2E test `should deliver Teams messages in final-only mode when streaming is off` when Teams tenant and webhook infrastructure are available in CI. Not blocking for this PR.
  • Expected follow-up: Prefer a current-PR fix when local to changed code; defer only with rationale or linked follow-up.
  • Verification: Check if test/e2e/ or tools/e2e/ have Teams delivery test harness; if not, this is a follow-up item for when E2E infrastructure expands.
  • Missing regression test: E2E test: spawn OpenClaw sandbox with Teams channel enabled, send message via Teams webhook, verify single final message delivered (no preview/final duplication)
  • Done when: The local improvement is applied, or the PR notes why it should be deferred.
  • Evidence: PR description acknowledges: 'A live Teams delivery test requires external tenant credentials and webhook infrastructure, so it is not a deterministic PR gate; the E2E Advisor also marked live E2E as unnecessary for this change.'
Test follow-ups to resolve or justify

If these cover changed behavior, prefer adding them in this PR; otherwise state why existing coverage is enough or link the follow-up.

  • PRA-T1 Runtime validation — E2E test: should deliver Teams messages in final-only mode when streaming is off (requires Teams tenant and webhook infrastructure). Compile-time unit tests verify the config renders correctly in the agent plan. Runtime validation would require live Teams tenant, webhook infrastructure, and message delivery verification — not a deterministic PR gate per PR description and E2E Advisor.
  • PRA-T2 Add runtime validation test for Teams streaming-off behavior when E2E infrastructure available — Add a targeted E2E test `should deliver Teams messages in final-only mode when streaming is off` when Teams tenant and webhook infrastructure are available in CI. Not blocking for this PR.
Since last review details

Current findings, using the urgency labels above:

PRA-1 Resolve/justify — Multiple overlapping PRs modify same files — coordinate merge order

PRA-2 Improvement — Add runtime validation test for Teams streaming-off behavior when E2E infrastructure available

  • Location: src/lib/messaging/channels/teams/manifest.ts:70
  • Category: tests
  • Problem: The PR disables Teams streaming by default as a workaround for upstream duplicate/collapse bugs. Compile-time tests verify the config renders correctly, but runtime message delivery validation would confirm the workaround achieves its intent.
  • Impact: Low risk — the workaround is documented with a clear removal condition. Runtime test would provide confidence that final-only mode avoids the upstream duplication issue.
  • Suggested action: Add a targeted E2E test `should deliver Teams messages in final-only mode when streaming is off` when Teams tenant and webhook infrastructure are available in CI. Not blocking for this PR.
  • Expected follow-up: Prefer a current-PR fix when local to changed code; defer only with rationale or linked follow-up.
  • Verification: Check if test/e2e/ or tools/e2e/ have Teams delivery test harness; if not, this is a follow-up item for when E2E infrastructure expands.
  • Missing regression test: E2E test: spawn OpenClaw sandbox with Teams channel enabled, send message via Teams webhook, verify single final message delivered (no preview/final duplication)
  • Done when: The local improvement is applied, or the PR notes why it should be deferred.
  • Evidence: PR description acknowledges: 'A live Teams delivery test requires external tenant credentials and webhook infrastructure, so it is not a deterministic PR gate; the E2E Advisor also marked live E2E as unnecessary for this change.'

Workflow run details

This is an automated, non-binding review; it still expects maintainers and agents to respond to each required or warning item. Treat suggestions as current-PR improvements when they touch changed code; defer only with maintainer rationale or a linked follow-up. A human maintainer must make the final merge decision.

@github-actions

github-actions Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings

Merge posture: No blocking advisor findings
Primary next action: Add or justify PRA-T1 and any related test follow-ups.
Open items: 0 required · 0 warnings · 0 suggestions · 3 test follow-ups
Since last review: 4 prior items resolved · 0 still apply · 0 new items found

Action checklist

  • PRA-T1 Add or justify test follow-up: Runtime validation
  • PRA-T2 Add or justify test follow-up: Runtime validation
  • PRA-T3 Add or justify test follow-up: Acceptance clause
Test follow-ups to resolve or justify

If these cover changed behavior, prefer adding them in this PR; otherwise state why existing coverage is enough or link the follow-up.

  • PRA-T1 Runtime validation — Add or identify a deterministic runtime/integration check that a rebuilt OpenClaw Teams sandbox applies `channels.msteams.streaming.mode === "off"` in the final `openclaw.json`.. The changed tests are appropriate for the declarative manifest/compiler scope and verify the exact rendered config. A live Teams delivery proof would require external tenant credentials and webhook infrastructure, so it is not treated as a blocking PR-gate gap here, but runtime validation would provide stronger confidence at the OpenClaw consumption boundary.
  • PRA-T2 Runtime validation — If a hermetic Teams runtime harness exists, add a behavior test that a Teams turn with streaming disabled emits exactly one final message and no preview/final duplicate or collapse.. The changed tests are appropriate for the declarative manifest/compiler scope and verify the exact rendered config. A live Teams delivery proof would require external tenant credentials and webhook infrastructure, so it is not treated as a blocking PR-gate gap here, but runtime validation would provide stronger confidence at the OpenClaw consumption boundary.
  • PRA-T3 Acceptance clause — No deterministic linked issue clauses or linked issue comments were available in the validation context (`linkedIssues: []`). — add test evidence or identify existing coverage. The PR body references `Refs [macOS][Agent&Skills] MS Teams bot repeats prior turn's reply / hallucinates instead of reporting failed web_search #5851`, but the deterministic context did not include issue [macOS][Agent&Skills] MS Teams bot repeats prior turn's reply / hallucinates instead of reporting failed web_search #5851 body or comments, so no linked-issue acceptance clauses can be extracted literally for this review.

Workflow run details

This is an automated, non-binding review; it still expects maintainers and agents to respond to each required or warning item. Treat suggestions as current-PR improvements when they touch changed code; defer only with maintainer rationale or a linked follow-up. A human maintainer must make the final merge decision.

@github-actions

github-actions Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: messaging-providers-e2e
Optional E2E: channels-stop-start-openclaw-e2e

Dispatch hint: messaging-providers-e2e

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: medium

Required E2E

  • messaging-providers-e2e (high): Closest existing E2E for messaging manifest/compiler behavior and provider/placeholder/policy wiring during a real sandbox flow. Although it does not appear to exercise Teams specifically, this PR changes a messaging channel manifest that is consumed by the same compile/render/onboard path.

Optional E2E

  • channels-stop-start-openclaw-e2e (high): Optional adjacent confidence for OpenClaw messaging channel lifecycle and rebuilt agent config rendering. Existing coverage does not include Teams, but it exercises the same OpenClaw channel stop/start rebuild machinery for other messaging channels.

New E2E recommendations

  • microsoft-teams-messaging (high): No existing E2E found that enables Microsoft Teams and verifies the rendered OpenClaw channels.msteams configuration. Add a Teams-focused E2E that onboards or rebuilds an OpenClaw sandbox with fake Teams credentials, verifies the Teams OpenShell provider placeholder, hostForward webhook port, teams policy preset, and asserts channels.msteams.streaming.mode is "off" in the sandbox config.
    • Suggested test: test/e2e/test-openclaw-teams-e2e.sh / nightly job openclaw-teams-e2e

Dispatch hint

  • Workflow: .github/workflows/nightly-e2e.yaml
  • jobs input: messaging-providers-e2e

@github-actions

github-actions Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

Vitest E2E Scenario Recommendation

Required Vitest E2E scenarios: None
Optional Vitest E2E scenarios: None

Workflow run

Full Vitest E2E advisor summary

Vitest E2E Scenario Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required Vitest E2E scenarios

  • None. This PR changes the Microsoft Teams channel manifest rendering plus unit-test expectations, but the trusted Vitest scenario registry/runtime support has no live-supported Microsoft Teams messaging scenario. Existing live messaging scenarios cover other channels and would not exercise the changed Teams streaming manifest surface.

Optional Vitest E2E scenarios

  • None.

Relevant changed files

  • src/lib/messaging/channels/teams/manifest.ts

@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.

🧹 Nitpick comments (2)
src/lib/messaging/compiler/manifest-compiler.test.ts (1)

567-567: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Use a structured assertion for agentRender.

Both JSON.stringify(plan.agentRender) checks are brittle and verify serialization instead of the compiled plan shape. Assert the Teams render entry directly so the test fails only when the default disappears. As per path instructions, "Prefer observable outcomes through the public boundary over source-text, private-shape, or mock-call assertions."

Also applies to: 599-599

🤖 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 `@src/lib/messaging/compiler/manifest-compiler.test.ts` at line 567, The
`agentRender` assertions in `manifest-compiler.test.ts` are brittle because they
check serialized JSON instead of the compiled plan shape; update the tests to
assert the Teams render entry directly on `plan.agentRender` so they validate
observable behavior through the public boundary. Use the existing
`plan.agentRender` and Teams-specific render data in the test to confirm the
default streaming mode remains off, and remove reliance on `JSON.stringify(...)`
in both affected assertions.

Source: Path instructions

src/lib/messaging/channels/manifests.test.ts (1)

730-730: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Assert on the structured manifest, not the JSON string.

toContain() here is brittle and ties the test to serialization details instead of the Teams default itself. Parse the output and assert channels.msteams.streaming.mode === "off" directly. As per path instructions, "Prefer observable outcomes through the public boundary over source-text, private-shape, or mock-call assertions."

🤖 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 `@src/lib/messaging/channels/manifests.test.ts` at line 730, The Teams manifest
test is asserting against a serialized JSON substring, which is brittle and
depends on formatting details. Update the test around renderJson(teamsManifest)
to parse the output and assert the structured Teams manifest directly,
specifically that channels.msteams.streaming.mode equals "off". Use the existing
teamsManifest and renderJson symbols to keep the check focused on the observable
default behavior rather than the JSON string shape.

Source: Path instructions

🤖 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 `@src/lib/messaging/channels/manifests.test.ts`:
- Line 730: The Teams manifest test is asserting against a serialized JSON
substring, which is brittle and depends on formatting details. Update the test
around renderJson(teamsManifest) to parse the output and assert the structured
Teams manifest directly, specifically that channels.msteams.streaming.mode
equals "off". Use the existing teamsManifest and renderJson symbols to keep the
check focused on the observable default behavior rather than the JSON string
shape.

In `@src/lib/messaging/compiler/manifest-compiler.test.ts`:
- Line 567: The `agentRender` assertions in `manifest-compiler.test.ts` are
brittle because they check serialized JSON instead of the compiled plan shape;
update the tests to assert the Teams render entry directly on `plan.agentRender`
so they validate observable behavior through the public boundary. Use the
existing `plan.agentRender` and Teams-specific render data in the test to
confirm the default streaming mode remains off, and remove reliance on
`JSON.stringify(...)` in both affected assertions.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 3071f5ea-24a8-4217-a9d3-c333f1bf4585

📥 Commits

Reviewing files that changed from the base of the PR and between c6113be and a3ae353.

📒 Files selected for processing (4)
  • docs/manage-sandboxes/messaging-channels.mdx
  • src/lib/messaging/channels/manifests.test.ts
  • src/lib/messaging/channels/teams/manifest.ts
  • src/lib/messaging/compiler/manifest-compiler.test.ts

@github-actions

Copy link
Copy Markdown
Contributor

E2E Target Recommendation

Required E2E targets: None
Optional E2E targets: None

Workflow run

Full E2E target advisor summary

E2E Target Advisor

Failed: Could not parse JSON from advisor output; see /home/runner/work/NemoClaw/NemoClaw/artifacts/e2e-advisor/e2e-target-advisor-raw-output.txt

@cv cv merged commit 9705e26 into main Jun 30, 2026
46 checks passed
@cv cv deleted the fix/5851-msteams-streaming-off branch June 30, 2026 04:22
@jyaunches jyaunches mentioned this pull request Jun 30, 2026
21 tasks
jyaunches added a commit that referenced this pull request Jun 30, 2026
<!-- markdownlint-disable MD041 -->
## Summary
Refreshes the public documentation for NemoClaw v0.0.71 after scanning
commits since v0.0.70. Adds release notes and fills the remaining doc
gaps for Windows bootstrap diagnostics, OpenClaw agent auto-relock
warnings, auto-pair cadence tuning, and plugin-install recovery hints.

## Changes
- `docs/about/release-notes.mdx`: adds the v0.0.71 release-note section,
grouped by gateway recovery, OpenShell auth, policy provenance, day-two
maintenance, messaging/inference, and Windows setup.
- `docs/get-started/windows-preparation.mdx`: documents sanitized WSL
install output and reboot gating in the Windows bootstrap.
- `docs/reference/commands.mdx`: documents the host `agent` wrapper's
shields auto-relock warning and OpenClaw auto-pair watcher tuning
variables.
- `docs/reference/troubleshooting.mdx`: adds plugin-install network
failure recovery guidance and updates Windows WSL troubleshooting for
sanitized install logs and reboot-required handling.

Source summary:
- #6065 -> `docs/about/release-notes.mdx`: Notes explicit model override
preservation and gateway-log guard-chain recovery diagnostics.
- #5874 -> `docs/about/release-notes.mdx`: Summarizes host-mediated
`recover` and `gateway restart`, linking to lifecycle, command,
troubleshooting, and trusted-boundary docs already added by the source
PR.
- #5596 -> `docs/about/release-notes.mdx`: Summarizes OpenShell 0.0.71
gateway auth, loopback binding, and compatibility-container docs already
added by the source PR.
- #5797 and #5798 -> `docs/about/release-notes.mdx`: Summarizes
`policy-list` provenance, Restricted tier suppression, and Balanced tier
weather behavior already reflected in policy docs.
- #5784 -> `docs/about/release-notes.mdx`: Summarizes
`--destroy-user-data` and the safe `--yes` uninstall behavior already
documented in lifecycle and command docs.
- #6034 -> `docs/about/release-notes.mdx`: Summarizes custom Dockerfile
warm-build cache behavior already documented in the command reference.
- #5951 -> `docs/reference/commands.mdx`: Documents the stderr-only host
`agent` wrapper warning after recent shields auto-relock.
- #5387 -> `docs/reference/commands.mdx`: Documents OpenClaw auto-pair
watcher cadence and fast-reentry tuning variables.
- #5835 -> `docs/reference/troubleshooting.mdx`: Adds recovery guidance
for OpenClaw plugin-install network failures.
- #5995 and #5956 -> `docs/about/release-notes.mdx`: Summarizes
Microsoft Teams final-message delivery and runtime mention hints already
covered by messaging docs.
- #5716 -> `docs/about/release-notes.mdx`: Summarizes non-interactive
Ollama loopback safety already covered by local inference docs.
- #5505, #5527, and #5528 -> `docs/about/release-notes.mdx`: Summarizes
compatible local endpoint, model task-fit, and model capability audit
docs.
- #6009 -> `docs/get-started/windows-preparation.mdx`,
`docs/reference/troubleshooting.mdx`: Documents sanitized Windows
bootstrap WSL output and reboot-required gating.
- #6055 -> no additional source doc page change needed beyond the
already-merged quickstart update; release notes did not duplicate
routine quickstart cleanup.

No matching v0.0.71 GitHub announcement discussion was found in the
latest 20 discussions, so this refresh is based on the commit scan and
existing source PR docs.

## Type of Change

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

## Quality Gates
<!-- Check all that apply. For any "covered by existing tests", "not
applicable", or waiver entry, add a brief justification on the same line
or in the Changes section. -->
- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: docs-only refresh with no
runtime behavior changes.
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [ ] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [ ] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification:
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## 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. -->
- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Git hooks passed during commit and push, or `npx prek run
--from-ref main --to-ref HEAD` passes
- [ ] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only)
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only) — ran
`npm run docs`; Fern reported 0 errors and 2 existing warnings.
- [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 is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>


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

## Summary by CodeRabbit

* **Documentation**
* Added a new release-notes entry covering gateway recovery,
authentication, network policy/provenance output, uninstall safety,
Windows bootstrap diagnostics, messaging defaults, and inference setup
guidance.
* Clarified Windows preparation steps around reboot behavior and
redacting troubleshooting transcripts.
* Expanded command reference details for OpenClaw wrapper behavior and
new auto-pair tuning options.
* Improved troubleshooting guidance for plugin installation issues, WSL
repair/reboot cases, and install timing problems.

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

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
<!-- markdownlint-disable MD041 -->
## Summary
This PR renders OpenClaw Microsoft Teams channels with
`channels.msteams.streaming.mode: "off"` by default. The change avoids
the native Teams streaming preview/final collapse path while OpenClaw
Teams duplicate-delivery issues remain open upstream.

## Related Issue
Refs NVIDIA#5851

## Changes
- Add `streaming: { mode: "off" }` to the OpenClaw Teams channel
fragment rendered by the messaging manifest.
- Assert the default in the built-in manifest and manifest compiler
tests.

## Type of Change

- [x] 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)

## Quality Gates
<!-- Check all that apply. For any "covered by existing tests", "not
applicable", or waiver entry, add a brief justification on the same line
or in the Changes section. -->
- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [ ] Docs updated for user-facing behavior changes
- [x] Docs not applicable — justification: no docs changes remain in
this PR.
- [x] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [x] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification: messaging manifest-only
config default; no credential, policy, or egress expansion; targeted
manifest/compiler tests passed.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## 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. -->
- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [ ] Git hooks passed during commit and push, or `npx prek run
--from-ref main --to-ref HEAD` passes
- [x] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only)
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] 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)

Verification run:
- `./node_modules/.bin/vitest run
src/lib/messaging/channels/manifests.test.ts
src/lib/messaging/compiler/manifest-compiler.test.ts`
- `npm run typecheck:cli`
- `git diff --check`
- Pre-push TypeScript hook passed.
- The docs-removal cleanup commit passed its staged-file commit hooks.

Note: the original pre-commit `Test (CLI)` hook did not pass locally
because unrelated environment-sensitive tests failed outside this diff,
including `src/lib/actions/sandbox/snapshot.test.ts`,
`src/lib/agent/runtime-recovery-preload.test.ts`,
`test/langchain-deepagents-code-image.test.ts`, and
`test/sandbox-rlimit-hooks.test.ts`.

---
<!-- DCO sign-off is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: San Dang <sdang@nvidia.com>
\n\n## Maintainer Runtime-Validation Rationale\n\nThis is a declarative
OpenClaw configuration default. The manifest and compiler tests prove
that the compiled agent render contains the exact
`channels.msteams.streaming.mode: "off"` value consumed by the existing
build applier. A live Teams delivery test requires external tenant
credentials and webhook infrastructure, so it is not a deterministic PR
gate; the E2E Advisor also marked live E2E as unnecessary for this
change. The source comment records the compatibility boundary and
removal condition.

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

## Summary by CodeRabbit

* **Bug Fixes**
* Microsoft Teams messaging now uses final-message delivery in OpenClaw
sandboxes, avoiding the upstream streaming preview/final behavior.
* Updated Teams manifest output to include the correct streaming
setting.

* **Documentation**
* Added a note explaining the Microsoft Teams streaming behavior for
OpenClaw sandboxes.

* **Tests**
* Expanded Teams-related checks to verify the new streaming
configuration appears in generated output.

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

---------

Signed-off-by: San Dang <sdang@nvidia.com>
Co-authored-by: Carlos Villela <cvillela@nvidia.com>
Hadar301 pushed a commit to Hadar301/NemoClaw-OpenShift that referenced this pull request Jul 12, 2026
<!-- markdownlint-disable MD041 -->
## Summary
Refreshes the public documentation for NemoClaw v0.0.71 after scanning
commits since v0.0.70. Adds release notes and fills the remaining doc
gaps for Windows bootstrap diagnostics, OpenClaw agent auto-relock
warnings, auto-pair cadence tuning, and plugin-install recovery hints.

## Changes
- `docs/about/release-notes.mdx`: adds the v0.0.71 release-note section,
grouped by gateway recovery, OpenShell auth, policy provenance, day-two
maintenance, messaging/inference, and Windows setup.
- `docs/get-started/windows-preparation.mdx`: documents sanitized WSL
install output and reboot gating in the Windows bootstrap.
- `docs/reference/commands.mdx`: documents the host `agent` wrapper's
shields auto-relock warning and OpenClaw auto-pair watcher tuning
variables.
- `docs/reference/troubleshooting.mdx`: adds plugin-install network
failure recovery guidance and updates Windows WSL troubleshooting for
sanitized install logs and reboot-required handling.

Source summary:
- NVIDIA#6065 -> `docs/about/release-notes.mdx`: Notes explicit model override
preservation and gateway-log guard-chain recovery diagnostics.
- NVIDIA#5874 -> `docs/about/release-notes.mdx`: Summarizes host-mediated
`recover` and `gateway restart`, linking to lifecycle, command,
troubleshooting, and trusted-boundary docs already added by the source
PR.
- NVIDIA#5596 -> `docs/about/release-notes.mdx`: Summarizes OpenShell 0.0.71
gateway auth, loopback binding, and compatibility-container docs already
added by the source PR.
- NVIDIA#5797 and NVIDIA#5798 -> `docs/about/release-notes.mdx`: Summarizes
`policy-list` provenance, Restricted tier suppression, and Balanced tier
weather behavior already reflected in policy docs.
- NVIDIA#5784 -> `docs/about/release-notes.mdx`: Summarizes
`--destroy-user-data` and the safe `--yes` uninstall behavior already
documented in lifecycle and command docs.
- NVIDIA#6034 -> `docs/about/release-notes.mdx`: Summarizes custom Dockerfile
warm-build cache behavior already documented in the command reference.
- NVIDIA#5951 -> `docs/reference/commands.mdx`: Documents the stderr-only host
`agent` wrapper warning after recent shields auto-relock.
- NVIDIA#5387 -> `docs/reference/commands.mdx`: Documents OpenClaw auto-pair
watcher cadence and fast-reentry tuning variables.
- NVIDIA#5835 -> `docs/reference/troubleshooting.mdx`: Adds recovery guidance
for OpenClaw plugin-install network failures.
- NVIDIA#5995 and NVIDIA#5956 -> `docs/about/release-notes.mdx`: Summarizes
Microsoft Teams final-message delivery and runtime mention hints already
covered by messaging docs.
- NVIDIA#5716 -> `docs/about/release-notes.mdx`: Summarizes non-interactive
Ollama loopback safety already covered by local inference docs.
- NVIDIA#5505, NVIDIA#5527, and NVIDIA#5528 -> `docs/about/release-notes.mdx`: Summarizes
compatible local endpoint, model task-fit, and model capability audit
docs.
- NVIDIA#6009 -> `docs/get-started/windows-preparation.mdx`,
`docs/reference/troubleshooting.mdx`: Documents sanitized Windows
bootstrap WSL output and reboot-required gating.
- NVIDIA#6055 -> no additional source doc page change needed beyond the
already-merged quickstart update; release notes did not duplicate
routine quickstart cleanup.

No matching v0.0.71 GitHub announcement discussion was found in the
latest 20 discussions, so this refresh is based on the commit scan and
existing source PR docs.

## Type of Change

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

## Quality Gates
<!-- Check all that apply. For any "covered by existing tests", "not
applicable", or waiver entry, add a brief justification on the same line
or in the Changes section. -->
- [ ] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [x] Tests not applicable — justification: docs-only refresh with no
runtime behavior changes.
- [x] Docs updated for user-facing behavior changes
- [ ] Docs not applicable — justification:
- [ ] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [ ] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification:
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## 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. -->
- [x] PR description includes the DCO sign-off declaration and every
commit appears as `Verified` in GitHub
- [x] Git hooks passed during commit and push, or `npx prek run
--from-ref main --to-ref HEAD` passes
- [ ] Targeted tests pass for changed behavior
- [ ] Full `npm test` passes (broad runtime changes only)
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only) — ran
`npm run docs`; Fern reported 0 errors and 2 existing warnings.
- [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 is required in this PR description, and every commit
must appear as Verified in GitHub. Run: git config user.name && git
config user.email -->
Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>


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

## Summary by CodeRabbit

* **Documentation**
* Added a new release-notes entry covering gateway recovery,
authentication, network policy/provenance output, uninstall safety,
Windows bootstrap diagnostics, messaging defaults, and inference setup
guidance.
* Clarified Windows preparation steps around reboot behavior and
redacting troubleshooting transcripts.
* Expanded command reference details for OpenClaw wrapper behavior and
new auto-pair tuning options.
* Improved troubleshooting guidance for plugin installation issues, WSL
repair/reboot cases, and install timing problems.

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

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
Co-authored-by: Prekshi Vyas <34834085+prekshivyas@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: messaging Messaging channels, bridges, manifests, or channel lifecycle bug-fix PR fixes a bug or regression integration: openclaw OpenClaw integration behavior

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants