Skip to content

Ship final preview bridge for stable CLI#2840

Closed
heyitsaamir wants to merge 20 commits into
previewfrom
cli/preview-stable-bridge
Closed

Ship final preview bridge for stable CLI#2840
heyitsaamir wants to merge 20 commits into
previewfrom
cli/preview-stable-bridge

Conversation

@heyitsaamir
Copy link
Copy Markdown
Collaborator

Summary

  • merge latest main into preview for the final preview release
  • keep preview versioning in place
  • point CLI self-update at @microsoft/teams.cli@latest so preview users can hop to stable

Validation

  • npm -w @microsoft/teams.cli test
  • npm -w @microsoft/teams.cli run build

Tiny bridge PR. Preview gets one last nudge toward stable land.

corinagum and others added 20 commits May 7, 2026 10:30
…lifecycle (#2817)

## Summary
- Adds a note to the TS "Self-Managing Your Server" doc clarifying that
plugin `onStart` hooks do not fire when callers skip `app.start()` and
run their own server lifecycle.
- Documents the workaround: invoke the plugin's `onStart` manually after
`await app.initialize()`.

## Why
Surfaced by:
- microsoft/teams.ts#512 - users adopting the
`IHttpServerAdapter` pattern for non-Express frameworks (Fastify,
Restify, etc.) skip `app.start()` and so silently lose any plugin setup
that lives in `onStart`.
- microsoft/teams.ts#544 - concrete repro:
`DevToolsPlugin` registers its router inside `onStart`, so a
self-managed `ExpressAdapter` setup leaves DevTools un-started until the
user manually invokes `devToolsPlugin.onStart({ port })`.

The `IHttpServerAdapter` interface already supports this self-managed
flow; this PR just makes the caveat explicit in the doc.

## Test plan
- [x] Verify the rendered doc page shows the new note in the right
section (after the Express self-managed example, before the "See the
full Express adapter example" link).
- [x] Sanity-check that the suggested `await myPlugin.onStart({ port:
3978 })` call shape matches the plugin lifecycle interface.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
## Summary

Adds a URL-shareable docs page that helps developers choose
between the **Microsoft 365 Agents SDK** and the **Microsoft Teams SDK**
when building for Microsoft Teams.

The page is structured around the **durable distinction** between the
two SDKs (channel breadth vs Teams-feature depth) rather than
feature-checklist parity, with a **basic vs premier** framing for the
Teams scenario.

## What's in it

- **Architectural diagram** showing the two SDKs target different
backends (Teams Bot Service, Azure Bot Service) but speak the same
Activity Protocol
- **Channel grouping**: purple (reachable from both SDKs) vs amber (M365
Agents SDK optimized path)
- **Feature inventory image** illustrating breadth (M365 Agents SDK) vs
depth (Microsoft Teams SDK)
- **Basic and Premier feature reference tables** for the Teams scenario
- **Bot Framework migration decision table** with paths for both SDKs

## Sidebar visibility

Frontmatter uses `sidebar_class_name: 'sidebar-hidden'` so the page is
reachable by URL but doesn't appear in the left navigation. Intent:
guidance content for developers asking "which SDK?", not a top-level
navigation item.

## Test plan

- [ ] Local Docusaurus dev server renders
`/teams-sdk/teams/choosing-an-sdk` cleanly
- [ ] Mermaid diagram in "How they relate" renders without arrow
crossings or layout glitches
- [ ] `sdk-feature-comparison.png` displays at appropriate size
- [ ] All internal links resolve (e.g. `./enabling-in-copilot`)
- [ ] All external links open correctly (Microsoft Learn, GitHub repos)
- [ ] Page does not appear in the left sidebar (URL-only)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
…d Identity" (#2696)

## Update Documentation: User Managed Identity → User Assigned Managed
Identity

- [x] Review all documentation files containing "User Managed Identity"
- [x] Update typescript.incl.md to use "User Assigned Managed Identity"
- [x] Update python.incl.md to use "User Assigned Managed Identity"
- [x] Update app-authentication/README.md to use "User Assigned Managed
Identity"
- [x] Update federated-identity-credentials.md to use "User Assigned
Managed Identity"
- [x] Update user-managed-identity.md content to use "User Assigned
Managed Identity"
- [x] Update app-authentication.mdx to use "User Assigned Managed
Identity"
- [x] Verify all changes are consistent and accurate
- [x] Rebase onto latest main branch and resolve conflicts

<!-- START COPILOT CODING AGENT SUFFIX -->



<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> In our docs, we say "User managed identity" when what we really mean
is "User assigned managed identity". Can you update the language please


</details>



<!-- START COPILOT CODING AGENT TIPS -->
---

💬 We'd love your input! Share your thoughts on Copilot coding agent in
our [2 minute survey](https://gh.io/copilot-coding-agent-survey).

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: heyitsaamir <48929123+heyitsaamir@users.noreply.github.com>
## Summary
Product rename: **Teams CLI** → **Teams Developer CLI** across the repo.

What got touched:
- **Package**: `packages/cli/package.json` description + the `Teams
Developer CLI [Beta]` help banner in `packages/cli/src/index.ts`. (The
npm name `@microsoft/teams.cli` is left alone — renaming that is a whole
different beast.)
- **Docs**: every "Teams CLI" mention across `teams.md/docs/**`,
`teams.md/src/**`, and `teams.md/static/llms_docs/**`.
- **Blog**: `2026-04-28-teams-cli-preview/index.md` body. Slug + folder
kept the same to avoid breaking the live URL.
- **Plugin / skill**: `plugins/teams-sdk/**`,
`.claude-plugin/marketplace.json`, root `README.md`,
`packages/cli/README.md`.

Left intentionally untouched:
- Internal identifiers (`teams-cli` keychain serviceName, envPaths,
USER_AGENT, tmpdir prefix, test resource group defaults) — changing
these would invalidate caches/configs.
- Unrelated terms like "Teams client", `@microsoft/teams.client`, "Teams
Developer Portal".
- Generic "the CLI" phrases that read fine in context.

## Test plan
- `npm run build --workspace=@microsoft/teams.cli` — confirm clean build
- Run `node packages/cli/dist/index.js --help` and check the banner says
`Teams Developer CLI [Beta]`
- Skim the docs site preview to confirm headings/links still resolve
Fixes [#565](microsoft/teams.ts#565)

## What

`teams app doctor` was assuming an Azure Bot resource is always named
after its MicrosoftAppId. That's only true for bots this CLI creates —
bots stamped out by Portal/Bicep/Terraform (or our own `migrate
--azure-name foo`) get human-readable names, and doctor would shrug `✗
Azure bot not found` and skip every downstream check.

## How

- **Discovery**: keep the `--name <botId>` fast path, then fall back to
Azure Resource Graph filtering on `properties.msaAppId`. If the graph
extension can't be installed, fall back again to listing bots and
fetching each one's properties in parallel.
- **Resource name plumbing**: `AzureContext` now carries the real Azure
resource name. Doctor uses `azure.name ?? botId` for `az bot show`, `az
bot msteams show`, and the authsetting calls — same shape, just the
right name.
- **Migrate**: new `--azure-name <name>` flag so users can give the
Azure resource a friendly name. Defaults to `botId` so nothing changes
for existing scripts.

## Tests

6 new unit tests covering: fast-path hit, graph fallback, list+show
last-resort fallback, both-empty, no-match, and az exploding.

## Verified e2e

Created a real teams-managed app, migrated to Azure with `--azure-name
migrate-test-renamed`, then ran doctor on the resulting Teams app:

| | Public `teams` CLI | This branch |
|---|---|---|
| Azure bot discovered | ✗ not found | ✔ |
| Endpoint reachable | (skipped) | ✔ |
| Teams channel | (skipped) | ✔ |
| `az bot authsetting list` (SSO path) | `ParentResourceNotFound` | ✔
`[]` |
Bumps [fast-uri](https://github.com/fastify/fast-uri) from 3.0.6 to
3.1.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/fastify/fast-uri/releases">fast-uri's
releases</a>.</em></p>
<blockquote>
<h2>v3.1.2</h2>
<h2>⚠️ Security Release</h2>
<ul>
<li>Fix for <a
href="https://github.com/fastify/fast-uri/security/advisories/GHSA-v39h-62p7-jpjc">https://github.com/fastify/fast-uri/security/advisories/GHSA-v39h-62p7-jpjc</a></li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Handle malformed fragment decoding as a parse error by <a
href="https://github.com/mcollina"><code>@​mcollina</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/171">fastify/fast-uri#171</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/fastify/fast-uri/compare/v3.1.1...v3.1.2">https://github.com/fastify/fast-uri/compare/v3.1.1...v3.1.2</a></p>
<h2>v3.1.1</h2>
<h2>⚠️ Security Release</h2>
<ul>
<li>Fix for <a
href="https://github.com/fastify/fast-uri/security/advisories/GHSA-q3j6-qgpj-74h6">https://github.com/fastify/fast-uri/security/advisories/GHSA-q3j6-qgpj-74h6</a></li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>build(deps-dev): bump tsd from 0.32.0 to 0.33.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/148">fastify/fast-uri#148</a></li>
<li>build(deps): bump actions/checkout from 4 to 5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/149">fastify/fast-uri#149</a></li>
<li>chore(.npmrc): ignore scripts by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/150">fastify/fast-uri#150</a></li>
<li>build(deps-dev): remove <code>@​fastify/pre-commit</code> by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/151">fastify/fast-uri#151</a></li>
<li>build(deps): bump actions/setup-node from 4 to 5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/152">fastify/fast-uri#152</a></li>
<li>ci(ci): add concurrency config by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/153">fastify/fast-uri#153</a></li>
<li>build(deps): bump actions/setup-node from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/154">fastify/fast-uri#154</a></li>
<li>build(deps): bump actions/checkout from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/156">fastify/fast-uri#156</a></li>
<li>chore(license): standardise license notice by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/159">fastify/fast-uri#159</a></li>
<li>style: remove trailing whitespace by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/161">fastify/fast-uri#161</a></li>
<li>ci: remove unused github files by <a
href="https://github.com/Tony133"><code>@​Tony133</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/162">fastify/fast-uri#162</a></li>
<li>chore: update readme by <a
href="https://github.com/Tony133"><code>@​Tony133</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/164">fastify/fast-uri#164</a></li>
<li>build(deps): bump
fastify/workflows/.github/workflows/plugins-ci-package-manager.yml from
5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/165">fastify/fast-uri#165</a></li>
<li>build(deps): bump fastify/workflows/.github/workflows/plugins-ci.yml
from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/166">fastify/fast-uri#166</a></li>
<li>build(deps-dev): bump neostandard from 0.12.2 to 0.13.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/167">fastify/fast-uri#167</a></li>
<li>ci: add lock-threads workflow by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/169">fastify/fast-uri#169</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Tony133"><code>@​Tony133</code></a> made
their first contribution in <a
href="https://redirect.github.com/fastify/fast-uri/pull/162">fastify/fast-uri#162</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.1">https://github.com/fastify/fast-uri/compare/v3.1.0...v3.1.1</a></p>
<h2>v3.1.0</h2>
<h2>What's Changed</h2>
<ul>
<li>ci: remove master branch support by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/126">fastify/fast-uri#126</a></li>
<li>chore(test) remove .gitkeep by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/128">fastify/fast-uri#128</a></li>
<li>ci(ci): set job permissions by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/129">fastify/fast-uri#129</a></li>
<li>ci: set permissions at workflow level by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/131">fastify/fast-uri#131</a></li>
<li>ci: set workflow permissions to read-only by default by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/132">fastify/fast-uri#132</a></li>
<li>ci(ci): restore job level permissions by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/133">fastify/fast-uri#133</a></li>
<li>build(deps-dev): bump tsd from 0.31.2 to 0.32.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/fastify/fast-uri/pull/134">fastify/fast-uri#134</a></li>
<li>ci(ci): pin actions to commit-hash by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/135">fastify/fast-uri#135</a></li>
<li>ci: add node 24 to test matrix by <a
href="https://github.com/Fdawgs"><code>@​Fdawgs</code></a> in <a
href="https://redirect.github.com/fastify/fast-uri/pull/136">fastify/fast-uri#136</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/fastify/fast-uri/commit/919dd8ea7689fcc220d0d9b71307f5095e723ef9"><code>919dd8e</code></a>
Bumped v3.1.2</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/c65ba573714af6b8e19e481d9444c27bc4355d07"><code>c65ba57</code></a>
fixup: linting</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/6c86c17c3d76fb93aa3700ec6c0fa00faeb97293"><code>6c86c17</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/a95158ad308df4d92bbde4eba699ce5165e9f796"><code>a95158a</code></a>
Handle malformed fragment decoding without throwing (<a
href="https://redirect.github.com/fastify/fast-uri/issues/171">#171</a>)</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/cea547c91c6aae610041b17b75792ca4aa035a6d"><code>cea547c</code></a>
Bumped v3.1.1</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/876ce79b662c3e5015e4e7dffe6f37752ad34f35"><code>876ce79</code></a>
Merge commit from fork</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/dcdf690b71a7bb3a19887ada65a9ab160d83bcc0"><code>dcdf690</code></a>
ci: add lock-threads workflow (<a
href="https://redirect.github.com/fastify/fast-uri/issues/169">#169</a>)</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/c860e6589b1ac346f66e114b4eadb9613768108c"><code>c860e65</code></a>
build(deps-dev): bump neostandard from 0.12.2 to 0.13.0 (<a
href="https://redirect.github.com/fastify/fast-uri/issues/167">#167</a>)</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/9b4c6dc82fde0ca44e674403ece9185d85bb6d5f"><code>9b4c6dc</code></a>
build(deps): bump fastify/workflows/.github/workflows/plugins-ci.yml (<a
href="https://redirect.github.com/fastify/fast-uri/issues/166">#166</a>)</li>
<li><a
href="https://github.com/fastify/fast-uri/commit/85d09a9f7aa76b32c2bb005a90a71e144c361d24"><code>85d09a9</code></a>
build(deps): bump
fastify/workflows/.github/workflows/plugins-ci-package-mana...</li>
<li>Additional commits viewable in <a
href="https://github.com/fastify/fast-uri/compare/v3.0.6...v3.1.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fast-uri&package-manager=npm_and_yarn&previous-version=3.0.6&new-version=3.1.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/teams-sdk/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…2824)

Bumps
[@babel/plugin-transform-modules-systemjs](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs)
from 7.28.5 to 7.29.4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/babel/babel/releases">@​babel/plugin-transform-modules-systemjs's
releases</a>.</em></p>
<blockquote>
<h2>v7.29.4 (2026-05-05)</h2>
<h4>:bug: Bug Fix</h4>
<ul>
<li><code>babel-plugin-transform-modules-systemjs</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17974">#17974</a>
[7.x backport]fix(systemjs): improve module string name support (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 1</h4>
<ul>
<li>Huáng Jùnliàng (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
<h2>v7.29.3 (2026-04-30)</h2>
<h4>:eyeglasses: Spec Compliance</h4>
<ul>
<li><code>babel-parser</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17923">#17923</a>
Support flow extends bound (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
</ul>
<h4>:bug: Bug Fix</h4>
<ul>
<li><code>babel-helper-create-class-features-plugin</code>,
<code>babel-plugin-proposal-decorators</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17931">#17931</a>
fix(decorators): replace super within all removed static elements (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
<li><code>babel-register</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17915">#17915</a> Fix
thread synchronization issues in <code>@babel/register</code> (<a
href="https://github.com/liuxingbaoyu"><code>@​liuxingbaoyu</code></a>)</li>
</ul>
</li>
<li><code>babel-compat-data</code>,
<code>babel-plugin-bugfix-safari-rest-destructuring-rhs-array</code>,
<code>babel-preset-env</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17788">#17788</a> Add
bugfix plugin for Safari array rest destructuring bug (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
</ul>
<h4>:nail_care: Polish</h4>
<ul>
<li><code>babel-parser</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17782">#17782</a>
Improve trailing comma comment handling (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
</ul>
<h4>:memo: Documentation</h4>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17847">#17847</a>
Replace npmjs.com links with npmx.dev (<a
href="https://github.com/nicolo-ribaudo"><code>@​nicolo-ribaudo</code></a>)</li>
</ul>
<h4>:running_woman: Performance</h4>
<ul>
<li><code>babel-helper-import-to-platform-api</code>,
<code>babel-plugin-proposal-import-wasm-source</code>,
<code>babel-plugin-transform-json-modules</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17818">#17818</a>
Load async Wasm and JSON imports in parallel (<a
href="https://github.com/nicolo-ribaudo"><code>@​nicolo-ribaudo</code></a>)</li>
</ul>
</li>
</ul>
<h4>Committers: 4</h4>
<ul>
<li>Babel Bot (<a
href="https://github.com/babel-bot"><code>@​babel-bot</code></a>)</li>
<li>Huáng Jùnliàng (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
<li>Nicolò Ribaudo (<a
href="https://github.com/nicolo-ribaudo"><code>@​nicolo-ribaudo</code></a>)</li>
<li><a
href="https://github.com/liuxingbaoyu"><code>@​liuxingbaoyu</code></a></li>
</ul>
<h2>v7.29.2 (2026-03-16)</h2>
<h4>:eyeglasses: Spec Compliance</h4>
<ul>
<li><code>babel-parser</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17840">#17840</a>
[7.x backport] async x =&gt; {} must be in leading pos (<a
href="https://github.com/JLHwung"><code>@​JLHwung</code></a>)</li>
</ul>
</li>
</ul>
<h4>:bug: Bug Fix</h4>
<ul>
<li><code>babel-helpers</code>,
<code>babel-plugin-transform-async-generator-functions</code>,
<code>babel-preset-env</code>, <code>babel-runtime-corejs3</code>
<ul>
<li><a
href="https://redirect.github.com/babel/babel/pull/17805">#17805</a>
[7.x backport] fix: Properly handle await in finally (<a
href="https://github.com/liuxingbaoyu"><code>@​liuxingbaoyu</code></a>)</li>
</ul>
</li>
<li><code>babel-preset-env</code></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/babel/babel/commit/a458f66074b97d54773db8159af673d23b26079b"><code>a458f66</code></a>
v7.29.4</li>
<li><a
href="https://github.com/babel/babel/commit/32ebd5aaf2526ddd176fd6a3d1e3dc594abdc8d9"><code>32ebd5a</code></a>
[7.x backport]fix(systemjs): improve module string name support (<a
href="https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs/issues/17974">#17974</a>)</li>
<li><a
href="https://github.com/babel/babel/commit/aa8394e454337d118ac3d40bfa3ee1a3cb3f3ed2"><code>aa8394e</code></a>
v7.29.0</li>
<li><a
href="https://github.com/babel/babel/commit/0053db620c05acf0036f593b5aaf4e372daa79d0"><code>0053db6</code></a>
Update polyfill packages (<a
href="https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-modules-systemjs/issues/17727">#17727</a>)</li>
<li>See full diff in <a
href="https://github.com/babel/babel/commits/v7.29.4/packages/babel-plugin-transform-modules-systemjs">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@babel/plugin-transform-modules-systemjs&package-manager=npm_and_yarn&previous-version=7.28.5&new-version=7.29.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/teams-sdk/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [mermaid](https://github.com/mermaid-js/mermaid) from 11.14.0 to
11.15.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mermaid-js/mermaid/releases">mermaid's
releases</a>.</em></p>
<blockquote>
<h2>mermaid@11.15.0</h2>
<h3>Minor Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7174">#7174</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/0aca21739c0d1fcaaa206e04a6cd574ebc415483"><code>0aca217</code></a>
Thanks <a
href="https://github.com/milesspencer35"><code>@​milesspencer35</code></a>!
- feat(sequence): Add support for decimal start and increment values in
the <code>autonumber</code> directive</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7512">#7512</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/8e17492f7365ba50896382feb69a23efd9d8a22d"><code>8e17492</code></a>
Thanks <a
href="https://github.com/aruncveli"><code>@​aruncveli</code></a>! -
feat(flowchart): add datastore shape</p>
<p>In Data flow diagrams, a datastore/warehouse/file/database is used to
represent data persistence. It is denoted by a rectangle with only top
and bottom borders, and can be used in flowcharts with <code>A@{ shape:
datastore, label: &quot;Datastore&quot; }</code>.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/6440">#6440</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/9ad8dde6d049adde85d8ed2d476c09b5820f3f4b"><code>9ad8dde</code></a>
Thanks <a href="https://github.com/yordis"><code>@​yordis</code></a>, <a
href="https://github.com/lgazo"><code>@​lgazo</code></a>! - feat: add
Event Modeling diagram</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7707">#7707</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/27db774627be1cee881961dfd0d2cb21cd01b79d"><code>27db774</code></a>
Thanks <a href="https://github.com/txmxthy"><code>@​txmxthy</code></a>!
- feat(architecture): expose four fcose layout knobs for
<code>architecture-beta</code> diagrams (<code>nodeSeparation</code>,
<code>idealEdgeLengthMultiplier</code>, <code>edgeElasticity</code>,
<code>numIter</code>) so authors can tune layout density and spread
overlapping siblings without changing diagram source</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7604">#7604</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/bf9502fb6012a4b724679b401ac928f5ee55161c"><code>bf9502f</code></a>
Thanks <a href="https://github.com/M-a-c"><code>@​M-a-c</code></a>! -
feat(class): add nested namespace support for class diagrams via dot
notation and syntactic nesting</p>
<p>If you have namespaces in class diagrams that use <code>.</code>s
already and want to render them without nesting (≤v11.14.0 behaviour),
you can use set <code>class.hierarchicalNamespaces=false</code> in your
mermaid config:</p>
<pre lang="yaml"><code>config:
  class:
    hierarchicalNamespaces: false
</code></pre>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7272">#7272</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/88cdd3dc0aab9577174561b04e14760c565a232b"><code>88cdd3d</code></a>
Thanks <a
href="https://github.com/xinbenlv"><code>@​xinbenlv</code></a>! -
feat(sankey): add outlined label style, configurable
nodeWidth/nodePadding, and custom node colors</p>
</li>
</ul>
<h3>Patch Changes</h3>
<ul>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7737">#7737</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/e9b0f34d8d82a6260077764ee45e1d7d90957a0f"><code>e9b0f34</code></a>
Thanks <a
href="https://github.com/ashishjain0512"><code>@​ashishjain0512</code></a>!
- fix: prevent unbalanced CSS styles in classDefs</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7737">#7737</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/37ff937f1da2e19f882fd1db01235db4d01f4056"><code>37ff937</code></a>
Thanks <a
href="https://github.com/ashishjain0512"><code>@​ashishjain0512</code></a>!
- fix: create CSS styles using the CSSOM</p>
<p>This removes some invalid CSS and normalizes some CSS formatting.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7508">#7508</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/bfe60cc67b9a6dec64f9161f58e4d24a06c42b65"><code>bfe60cc</code></a>
Thanks <a href="https://github.com/biiab"><code>@​biiab</code></a>! -
fix(stateDiagram): <code>end note</code> now only closes a note when
used on a new line</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7737">#7737</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/faafb5d49106dd32c367f3882505f2dd625aa30e"><code>faafb5d</code></a>
Thanks <a
href="https://github.com/ashishjain0512"><code>@​ashishjain0512</code></a>!
- fix(gantt): add iteration limit for <code>excludes</code> field</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7737">#7737</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/65f8be2a42faf869b811469571983cba7eeeca99"><code>65f8be2</code></a>
Thanks <a
href="https://github.com/ashishjain0512"><code>@​ashishjain0512</code></a>!
- fix: disallow some CSS at-rules in custom CSS</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7726">#7726</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/1502f32f3c5fb944925b0c527fbbde3c4f041824"><code>1502f32</code></a>
Thanks <a
href="https://github.com/aloisklink"><code>@​aloisklink</code></a>! -
fix(wardley): fix unnecessary sanitization of text</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7578">#7578</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/1f98db8e326299ac97a2fa60abfd509d8f5f16e2"><code>1f98db8</code></a>
Thanks <a
href="https://github.com/Gaston202"><code>@​Gaston202</code></a>! -
fix(class): self-referential class multiplicity labels no longer
rendered multiple times</p>
<p>Fixes <a
href="https://redirect.github.com/mermaid-js/mermaid/issues/7560">#7560</a>.
Resolves an issue where cardinality labels on self-referential class
relationships were rendered three times due to edge splitting in the
dagre layout. The fix ensures that each sub-edge only carries its
relevant label positions.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7592">#7592</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/2343e38498a3b31f8ce5e79f1f009e0b56fbe086"><code>2343e38</code></a>
Thanks <a
href="https://github.com/knsv-bot"><code>@​knsv-bot</code></a>! -
fix(sequence): add background box behind alt/else section title labels
in sequence diagrams</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7589">#7589</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/7fb9509b8b5cb1dc48519dc60cf6cdc6afba0462"><code>7fb9509</code></a>
Thanks <a
href="https://github.com/NYCU-Chung"><code>@​NYCU-Chung</code></a>! -
fix(block): prevent column widths from shrinking when mixing different
column spans</p>
</li>
<li>
<p><a
href="https://redirect.github.com/mermaid-js/mermaid/pull/7632">#7632</a>
<a
href="https://github.com/mermaid-js/mermaid/commit/3f9e0f15bedc1e2c71ddb6b34192d1a21124cfc2"><code>3f9e0f1</code></a>
Thanks <a
href="https://github.com/ekiauhce"><code>@​ekiauhce</code></a>! -
fix(sequence): correct messageAlign label position for right-to-left
arrows in sequence diagrams</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/mermaid-js/mermaid/commit/41646dfd43ac83f001b03c70605feb036afae46d"><code>41646df</code></a>
Merge pull request <a
href="https://redirect.github.com/mermaid-js/mermaid/issues/7739">#7739</a>
from aloisklink/ci/fix-release</li>
<li><a
href="https://github.com/mermaid-js/mermaid/commit/2671f5c44a1515960ebc41c09a365c41860f95ee"><code>2671f5c</code></a>
docs: fix v11.15.0 release</li>
<li><a
href="https://github.com/mermaid-js/mermaid/commit/f4bf04b5db8bed603e40ed3d5ce5228d6b07754e"><code>f4bf04b</code></a>
Merge pull request <a
href="https://redirect.github.com/mermaid-js/mermaid/issues/7738">#7738</a>
from mermaid-js/changeset-release/master</li>
<li><a
href="https://github.com/mermaid-js/mermaid/commit/abfb563e1dcbd46d617f44a6361bd6d926dc6289"><code>abfb563</code></a>
Version Packages</li>
<li><a
href="https://github.com/mermaid-js/mermaid/commit/60b289f428d0a0832ad95ed4e1fb326344e23532"><code>60b289f</code></a>
Release Candidate 11.15.0 (<a
href="https://redirect.github.com/mermaid-js/mermaid/issues/7737">#7737</a>)</li>
<li><a
href="https://github.com/mermaid-js/mermaid/commit/d37c0db39ca2405b4473361063df2c47109dc2c9"><code>d37c0db</code></a>
Merge pull request <a
href="https://redirect.github.com/mermaid-js/mermaid/issues/7730">#7730</a>
from aloisklink/fix/fix-edgeLabelRightLeft-changes</li>
<li><a
href="https://github.com/mermaid-js/mermaid/commit/5ab5a2895fa8b7e90de85b43a4b99aa50b39b0f1"><code>5ab5a28</code></a>
docs: improve nested namespace changeset</li>
<li><a
href="https://github.com/mermaid-js/mermaid/commit/18f8b4c5bf67aface3485272b48042f2fdd6fad2"><code>18f8b4c</code></a>
fix: revert endEdgeLabelLeft/endEdgeLabelRight change</li>
<li><a
href="https://github.com/mermaid-js/mermaid/commit/504b2eb73d4d827baa817efd47ab6f44ae769b5a"><code>504b2eb</code></a>
Merge pull request <a
href="https://redirect.github.com/mermaid-js/mermaid/issues/7726">#7726</a>
from aloisklink/fix/correct-unnecessary-html-escapes...</li>
<li><a
href="https://github.com/mermaid-js/mermaid/commit/1502f32f3c5fb944925b0c527fbbde3c4f041824"><code>1502f32</code></a>
fix(wardley): fix unnecessary sanitization of text</li>
<li>Additional commits viewable in <a
href="https://github.com/mermaid-js/mermaid/compare/mermaid@11.14.0...mermaid@11.15.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=mermaid&package-manager=npm_and_yarn&previous-version=11.14.0&new-version=11.15.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/microsoft/teams-sdk/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Updated the link as per Microsoft guidelines
…2821)

## Summary

The Step 3 and Step 4 `oauth2PermissionScopes` payloads in
`sso-setup.mdx` were missing two fields:

- `userConsentDescription`
- `userConsentDisplayName`

When the scope is `type: "User"` (which it is here), these fields are
what end users see at the consent prompt. Without them, the prompt falls
back to the admin text or default strings — a degraded UX.

This PR also expands `adminConsentDescription` from `"Access as user"`
(which was identical to the display name) to an actual descriptive
sentence.

## Context

[PR #2705](#2705) opened by
@hggzm originally added these fields against the pre-rewrite
`sso-setup.md`. That file was renamed to `sso-setup.mdx` and
substantially rewritten in #2719, leaving #2705 with an unresolvable
rebase conflict (modify/delete). This PR re-applies the contribution
against the current file. Closes the gap; #2705 can be closed as
superseded.

Refs: #2670, #2705

Co-authored-by: Hugo Gonzalez <hugogonzalez@microsoft.com>
## Summary
- make `teams self-update` use the package manager that owns the current
install (before it would just `npm`.)
- refuse to self-update source/local installs instead of updating some
random global package, spooky stuff avoided
- share update version checks, handle prereleases properly, and wire up
`--disable-auto-update`

## Test plan
- npm -w @microsoft/teams.cli run check-types
- npm -w @microsoft/teams.cli test
- npm -w @microsoft/teams.cli run build
- tested npm self-update: installed internal
`@microsoft/teams.cli@2.10.0` globally with npm, then `teams
self-update` updated it to `3.0.0-preview.5`
- tested pnpm self-update: installed internal
`@microsoft/teams.cli@2.11.0` globally with pnpm, then `teams
self-update` updated it to `3.0.0-preview.5`
- tested bun self-update: installed internal
`@microsoft/teams.cli@2.10.0` globally with bun, then `teams
self-update` updated it to `3.0.0-preview.5`

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Fixes #2830.

`discoverAzureBot` and its helpers collapsed every az failure into
`null`, indistinguishable from a real "bot not found." `app update
--json` then returned a misleading `NOT_FOUND_AZURE_BOT`; under `--yes`,
an agent could try to recreate a bot that already exists but couldn't be
read.

Rebased on top of #2825's fallback chain. Only the bug-shaped catches
are removed; the two structural ones are kept:

- `findBotByName` outer catch — **removed** (pure suppression).
- `findBotByMsaAppIdViaList` outer catch — **removed** (pure
suppression).
- `findBotByMsaAppIdViaList` per-bot catch — **kept** (per-element
resilience inside `Promise.all`).
- `findBotByMsaAppIdViaGraph` outer catch — **kept** (intentional
fallback signal: routes "graph extension unavailable" to the list path;
pinned by #2825's tests).

`discoverAzureBot` rewraps the surviving catch as
`CliError('API_ARM_ERROR', 'Failed to discover Azure bot: <stderr>')` —
preferring `error.stderr` over `error.message` so the real az diagnostic
surfaces instead of `Command failed: cmd /c az.cmd ...`. `app doctor`
wraps the call so a throw becomes a `fail` entry instead of terminating
the report.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Update docs to include updated quoted replies examples

---------

Co-authored-by: Corina Gum <>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
## Summary
- Adds an external-redirect entry for [Python support for the Microsoft
Teams SDK is now generally
available](https://devblogs.microsoft.com/microsoft365dev/python-support-for-the-microsoft-teams-sdk-is-now-generally-available/)
so it shows up in the docs blog listing
- Mirrors the format used by the existing Nov 18 entry and follows
`BLOGGING.md`
- The auto-sync script (`scripts/sync-devblogs.ts`) didn't catch this
post because it isn't tagged `teams-ai-library` on devblogs

## Test plan
- [ ] `npm run docs:dev` shows the post in `/teams-sdk/blog`
- [ ] Clicking through redirects to the devblogs URL
- [ ] `npx tsx scripts/sync-devblogs.ts --dry-run` reports no new posts
to add (i.e. no duplicate would be created on next sync)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
## Summary

Adds an in-depth guide for message reactions covering outbound
add/remove and inbound `messageReaction` handling, plus links the
existing "Reactions" section in the Sending Messages essentials page to
the new guide.

## What's covered in the guide

- Public-developer-preview banner
- Adding and removing reactions (`api.reactions.add` /
`api.reactions.delete` / `Reactions.AddAsync` / `Reactions.DeleteAsync`)
- Receiving reactions: `messageReaction` activity handlers across all
three SDKs, plus the .NET-only `OnMessageReactionAdded` /
`OnMessageReactionRemoved` sub-handlers
- Available reaction types — the modern set of 6 (`like`, `heart`,
`1f440_eyes`, `2705_whiteheavycheckmark`, `launch`, `1f4cc_pushpin`)
- Skin tone variants (`-tone1` … `-tone5`)
- Rate limits (2 reactions/sec, 429 + Retry-After)
- Best practices and differences from Feedback

## What's intentionally omitted

- **Custom reactions section** — aligned with the Microsoft Learn agent
reactions PR
([msteams-docs#13991](MicrosoftDocs/msteams-docs#13991)),
which is omitting custom reaction examples due to a known client-side
rendering issue. A commented-out link to the Learn reactions reference
remains in the source for restoration once that PR lands.
- **Advanced API client usage** — the previous draft's example
referenced an `ApiClient` constructor that doesn't exist in the current
SDK; removed rather than rewritten.

## Coordination

- C# samples follow the project convention from #2735 (cancellationToken
in handler signatures, threaded through `Send`, `Task.Delay`, and
reaction API calls).
- The TypeScript include uses `api.reactions.delete()` ahead of
[microsoft/teams.ts#567](microsoft/teams.ts#567),
which renames `remove()` → `delete()` to align with teams.py and
teams.net.

## Test plan

- [x] `npm start` regenerates docs cleanly with no content gaps
- [x] Per-language renders (TS / Python / C#) verified in the dev server
- [x] Cross-link from `essentials/sending-messages` → in-depth guide
resolves correctly
- [ ] Visual review on the deployed preview

---------

Co-authored-by: Corina Gum <14900841+corinagum@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
## Summary

Removes the `:::tip[.NET]` callout block from the reactions in-depth
guide's C# include. The block instructed readers to suppress
`ExperimentalTeamsReactions` via `#pragma` or `<NoWarn>` — that's no
longer applicable now that the `[Experimental]` attribute is being
removed from teams.net (sibling PR).

## Cross-SDK coordination

Part of the cross-SDK Reactions-GA pass. Sibling PRs:
- microsoft/teams.ts#575 — Mark reactions API as GA
- microsoft/teams.py#427 — Mark reactions API as GA
- microsoft/teams.net#509 — Mark reactions API as GA (Libraries + core)

## Test plan

- [x] `npm start` regenerates docs cleanly with no content gaps
- [x] C# in-depth guide renders without the opt-in callout (verified in
local dev server)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adding Teams Reaction Reference page from learn so developers can use
any emojiID for reactions.

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
## Summary
- Stop inserting dots into C# project names during scaffold
- Add tests so `PmAgent` stays `PmAgent` instead of becoming `Pm.Agent`
- Historically, it looks like this was accidentally added.


Fixes microsoft/teams.ts#137
Fixes microsoft/teams.ts#371

## Test plan
- `npm --prefix packages/cli test -- project-new-csharp.test.ts`
- `npm --prefix packages/cli run check-types`
- Manually scaffolded `project new csharp PmAgent --template echo
--json`
…idge

# Conflicts:
#	packages/cli/src/apps/bot-handler.ts
#	packages/cli/tests/discover-azure-bot.test.ts
@heyitsaamir
Copy link
Copy Markdown
Collaborator Author

Closing this one for now — the self-update code change should land in main first (#2841), then we can do a clean preview bridge PR that only merges main into preview.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants