Skip to content

[docs] Document Traces page Spans column overflow tooltip - #1876

Open
aspire-repo-bot[bot] wants to merge 9 commits into
release/17.0from
docs/pr-20840-38273836913-1-0ff79d0494d0ec1b
Open

aspire-repo-bot[bot] wants to merge 9 commits into
release/17.0from
docs/pr-20840-38273836913-1-0ff79d0494d0ec1b

Conversation

@aspire-repo-bot

Copy link
Copy Markdown
Contributor

Documents changes from microsoft/aspire#20840

@TessaIO

Target branch

Targeting release/17.0 based on the source PR milestone 17.0 (exact match found on microsoft/aspire.dev).

Why this is needed

microsoft/aspire#20840 fixed an ArgumentOutOfRangeException that could occur when rendering the resource overflow tooltip in the Traces page's Spans column, and reworked the tooltip to filter stale/invalid indexes while preserving resource tags, span counts, and tooltip presentation. The PR's "User-facing usage" section states:

On the dashboard Traces page, resource tags that do not fit in the Spans column appear in the overflow tooltip. Delayed overflow measurements after a resource-list update no longer crash tooltip rendering; valid resource tags remain visible in the tooltip.

The existing dashboard/explore.mdx page described the Spans column only as "The resources involved in the request," with no mention of the overflow/tooltip behavior for resource tags that don't fit in the column. This left a documentation gap for a user-visible dashboard feature.

What changed

  • src/frontend/src/content/docs/dashboard/explore.mdx: Expanded the Spans bullet in the Traces page description to explain that overflowing resource tags collapse into a +N indicator, and hovering over it shows the remaining resources and their span counts in a tooltip.

No new pages were created; this is a small, targeted update to an existing page.

Validation

Documentation-only change; no build/test commands were run per repository guidance for doc-only edits.

Generated by PR Documentation Check for #20840 · copilot · auto · 60.7 AIC · ⌖ 10.5 AIC · ⊞ 20.4K · ◷

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@aspire-repo-bot aspire-repo-bot Bot added the docs-from-code Copilot initiated issue from dotnet/aspire repo label Oct 12, 2026
@aspire-repo-bot

Copy link
Copy Markdown
Contributor Author

Frontend HTML artifact ready

The latest frontend build uploaded the frontend-dist artifact for PR #1876. Use the VS Code button below to open this PR with GitHub Artifacts Explorer and browse the built HTML locally.

VS Code: Open PR #1876 artifacts

This comment updates automatically when a new frontend build artifact is uploaded.

## Summary

<!-- Describe what this pull request changes and why. -->

Improve mobile navigation, reading, and catalogs across aspire.dev while
preserving the site's identity, content, and desktop information
architecture.

- Use the 34px **On this page** scale for secondary controls, with 12px
horizontal page-action padding and natural grouped wrapping. Keep
primary calls to action larger and code-copy glyphs at 16px.
- Make announcement links ordinary underlined text, with a separate
dismiss column that cannot overlap the copy. Preserve dismissal, expiry,
and reduced-motion behavior.
- Show page hierarchy as one conventional wrapping breadcrumb trail:
underlined ancestor links and a plain current page, without a back arrow
or page-selector-like dropdown. The in-page TOC is unchanged.
- Balance headings and wrap technical identifiers at meaningful
boundaries without changing their text. Match integration-card code
borders to surrounding light-theme controls.
- Match Hub search to other fields on every viewport: 34px on
phone/coarse layouts and 48px on desktop. Glossary topic/alphabet
filters and equivalent API filters share the 34px control scale.
- Preserve dedicated API search, keyboard/focus behavior, accessible
filter disclosure, bounded menus, client-side navigation cleanup, and
contained API/table scrolling.
- Fix production rich-doc link styling and native Pagefind/catalog
padding parity, and update the broader CI contracts to use real
mobile-menu navigation rather than hidden desktop-only controls.

### Current screenshots

65 mobile captures and 8 desktop checks replace the earlier screenshots.
They include final Hub/glossary size comparisons, 320px and doubled-text
cases, and expanded controls. Fonts, transitions, visible images, and
filter results were settled before capture. Click an image for its
full-size view.

<details><summary>Homepage</summary>

![Homepage, 390px
light](https://github.com/user-attachments/assets/a87fca0e-5bbe-44d5-8894-1226e4d9c215)

</details>

<details><summary>Documentation</summary>

| Documentation landing | First-app tutorial |
| --- | --- |
| ![Documentation landing, 390px
light](https://github.com/user-attachments/assets/7fa955e2-ac39-4c15-bac7-2001dcae4fe0)
| ![First-app tutorial, 390px
light](https://github.com/user-attachments/assets/e7259b00-d9c9-401f-9cb7-f1087a832e74)
|

| CLI installation | CLI reference |
| --- | --- |
| ![CLI installation, 390px
light](https://github.com/user-attachments/assets/f8120fcf-a405-4dc0-a2ee-2ce4659d3e49)
| ![CLI reference, 390px
light](https://github.com/user-attachments/assets/104427d4-248f-4e17-aa4c-5b4c6efb28d2)
|

</details>

<details><summary>Integrations, dashboard, and deployment</summary>

| Integrations landing | Integration gallery |
| --- | --- |
| ![Integrations landing, 390px
light](https://github.com/user-attachments/assets/1e2c44b4-54df-4f24-8d96-247e63e58400)
| ![Integration gallery, 390px
light](https://github.com/user-attachments/assets/2c3a41f4-41ce-40bb-8841-51536f3048cd)
|

| Redis integration guide | Dashboard landing |
| --- | --- |
| ![Redis integration guide, 390px
light](https://github.com/user-attachments/assets/ec0f32c3-fd5e-436b-a90d-c348d8f5404b)
| ![Dashboard landing, 390px
light](https://github.com/user-attachments/assets/6d8d949e-9462-4ff7-a9a4-e1da557bd265)
|

![Deployment landing, 390px
light](https://github.com/user-attachments/assets/cd24c8f0-0672-484d-a941-f1afac198386)

</details>

<details><summary>Community and media</summary>

| Community landing | Live videos |
| --- | --- |
| ![Community landing, 390px
light](https://github.com/user-attachments/assets/033009e9-1cbd-49f9-9e6a-07910548c53a)
| ![Live videos, 390px
light](https://github.com/user-attachments/assets/39e156ed-19be-4e06-b4d1-07a8b65ec7e5)
|

| Contributors | Acknowledgements |
| --- | --- |
| ![Contributors, 390px
light](https://github.com/user-attachments/assets/7f4322bf-cbae-4df6-9cf8-4c46f00b3960)
| ![Acknowledgements, 390px
light](https://github.com/user-attachments/assets/ce0d4f58-03dd-499e-8d5d-6d1c3e979444)
|

![Conference page, 390px
light](https://github.com/user-attachments/assets/f2adb6da-ef8d-4af4-9cb7-e9a6e91b29a2)

</details>

<details><summary>Catalogs and resource hub</summary>

| Samples | Sample details |
| --- | --- |
| ![Samples, 390px
light](https://github.com/user-attachments/assets/205d58c1-86bf-4d3c-89a0-46504f4fd8bf)
| ![Sample details, 390px
light](https://github.com/user-attachments/assets/a751fac1-2f97-423b-bfb1-0ee664056e16)
|

| Container images | Hub with matched search height |
| --- | --- |
| ![Container images, 390px
light](https://github.com/user-attachments/assets/13074f66-2cad-4c6b-8251-93de6fa3a67b)
| ![Hub, 390px
light](https://github.com/user-attachments/assets/70b3078f-fa0d-4c37-bc75-7a256931a355)
|

| Resource browser | Glossary with matched filter heights |
| --- | --- |
| ![Resource browser, 390px
light](https://github.com/user-attachments/assets/39fa2bb2-defe-4ca2-a156-a60e8c3ab960)
| ![Glossary, 390px
light](https://github.com/user-attachments/assets/ec37a8e9-a08a-4ac8-a637-96befe2d2e29)
|

![Long glossary title, 390px
light](https://github.com/user-attachments/assets/bc5c0f12-b936-47f7-a8c8-7b9409a6a2bf)

</details>

<details><summary>Localization and supporting pages</summary>

| Release notes | Translation dashboard |
| --- | --- |
| ![Release notes, 390px
light](https://github.com/user-attachments/assets/8321368a-ad8b-464c-94b5-946e2311da17)
| ![Translation dashboard, 390px
light](https://github.com/user-attachments/assets/f3fe6bc1-ea4a-4289-86c0-877a80e4df0a)
|

| 404 | German tutorial |
| --- | --- |
| ![404, 390px
light](https://github.com/user-attachments/assets/faa6a12d-df8a-4a2d-84e6-98f59c816d41)
| ![German tutorial, 390px
light](https://github.com/user-attachments/assets/a7c98792-aa99-4ae5-ab8f-be71af5501b1)
|

![Japanese tutorial, 390px
light](https://github.com/user-attachments/assets/3c1d1e85-f7d3-43a2-98ce-2c76b6987d85)

</details>

<details><summary>API reference</summary>

| C# index | C# package |
| --- | --- |
| ![C# index, 390px
light](https://github.com/user-attachments/assets/de892034-6f9d-4cff-9cd8-a3f1ea75fc68)
| ![C# package, 390px
light](https://github.com/user-attachments/assets/5428d7b9-4ca3-4811-8650-dc35655d3d19)
|

| C# type | C# members |
| --- | --- |
| ![C# type, 390px
light](https://github.com/user-attachments/assets/0306ea1f-65a1-44e8-92e9-ad13d7afb39b)
| ![C# members, 390px
light](https://github.com/user-attachments/assets/0c43194f-c166-4022-82e8-6f9e220cbe69)
|

| TypeScript index | TypeScript module |
| --- | --- |
| ![TypeScript index, 390px
light](https://github.com/user-attachments/assets/9ef75ba4-741a-4689-8762-ef29f79dae34)
| ![TypeScript module, 390px
light](https://github.com/user-attachments/assets/0758d449-a7f3-4367-8369-24baa413fe1d)
|

| TypeScript type | TypeScript member |
| --- | --- |
| ![TypeScript type, 390px
light](https://github.com/user-attachments/assets/2e8cdbf9-cfa6-4309-b062-a18472558b13)
| ![TypeScript member, 390px
light](https://github.com/user-attachments/assets/12390475-6c27-4037-8844-daafa73ea422)
|

</details>

<details><summary>Expanded controls</summary>

| Site menu | Documentation menu |
| --- | --- |
| ![Site menu, 390px
light](https://github.com/user-attachments/assets/b75d0422-33d7-469b-8dd0-7c134fc6b4a4)
| ![Documentation menu, 390px
light](https://github.com/user-attachments/assets/7c95a723-70c0-47db-beac-ef7f5d4a9c5d)
|

| API sidebar | Open menu |
| --- | --- |
| ![API sidebar, 390px
light](https://github.com/user-attachments/assets/3059fe0f-7b13-48d3-8789-74ab2a559c50)
| ![Open menu, 390px
light](https://github.com/user-attachments/assets/01b00ce7-6a89-4ee6-9d8f-2b1f78192d15)
|

| Share menu | Resource filters |
| --- | --- |
| ![Share menu, 390px
light](https://github.com/user-attachments/assets/39a75702-c8b4-45aa-b1a2-366b952ef255)
| ![Resource filters, 390px
light](https://github.com/user-attachments/assets/214b1adc-cc29-40ba-abf6-c3cf92c96b4f)
|

| API versions | Sample tags |
| --- | --- |
| ![API versions, 390px
light](https://github.com/user-attachments/assets/2c55c3e2-3999-4dad-816c-388730bf78a3)
| ![Sample tags, 390px
light](https://github.com/user-attachments/assets/f84a6064-47bc-40ab-86cc-900d0cf296af)
|

| Footer preferences | Language preferences |
| --- | --- |
| ![Footer preferences, 390px
light](https://github.com/user-attachments/assets/5f692383-e4af-403e-9eb8-b360b395b921)
| ![Language preferences, 390px
light](https://github.com/user-attachments/assets/d060aae7-8398-4673-9966-9b4ba906528e)
|

| Contained translation table | Long API parameters |
| --- | --- |
| ![Contained translation table, 390px
light](https://github.com/user-attachments/assets/6e0f7614-2318-4d3b-8f80-db7430ddb2e3)
| ![Long API parameters, 390px
light](https://github.com/user-attachments/assets/8defda44-d132-4453-9202-b1933d80ddaa)
|

![Release navigation, 390px
light](https://github.com/user-attachments/assets/16c66cfb-cad9-41e9-893e-91613786a40b)

</details>

<details><summary>Conventional page hierarchy</summary>

![Complete wrapping breadcrumb trail, 390px
light](https://github.com/user-attachments/assets/673f55c0-b14f-4f57-be21-85ed74084011)

</details>

<details><summary>Dark theme</summary>

| Homepage | Integration gallery |
| --- | --- |
| ![Homepage, 390px
dark](https://github.com/user-attachments/assets/459ae41b-5451-4bc4-81ad-fc7367470ddc)
| ![Integration gallery, 390px
dark](https://github.com/user-attachments/assets/efe255c8-50fb-4cd6-b501-49eeb1bb36ea)
|

| API members | Resource browser |
| --- | --- |
| ![API members, 390px
dark](https://github.com/user-attachments/assets/12a34c2f-a042-43b3-8ace-5437d8ca117d)
| ![Resource browser, 390px
dark](https://github.com/user-attachments/assets/4cbe3bb6-c451-4544-aeb7-2a53423f5d52)
|

![Site menu, 390px
dark](https://github.com/user-attachments/assets/8e56809c-3855-4c0b-a70e-ad558931e5b7)

</details>

<details><summary>Narrow phones</summary>

| Homepage | CLI installation |
| --- | --- |
| ![Homepage, 320px
light](https://github.com/user-attachments/assets/2a50fead-eb40-4469-b61f-df56a75d8d5e)
| ![CLI installation, 320px
light](https://github.com/user-attachments/assets/fcad8551-b35c-4656-85bc-588aeef8fa4c)
|

| API parameter types | Translation table |
| --- | --- |
| ![API parameter types, 320px
light](https://github.com/user-attachments/assets/2f03713f-e4a1-4ff0-b0ea-daded9bad473)
| ![Translation table, 320px
light](https://github.com/user-attachments/assets/65ec4064-1ddc-4421-91ba-52fbf496eeb4)
|

![CLI code-copy control, 320px
light](https://github.com/user-attachments/assets/376409ba-6014-4ad5-b4ac-c24274339516)

</details>

<details><summary>Code and long labels</summary>

| Compact code-copy control | Longest integration name |
| --- | --- |
| ![Compact code-copy control, 390px
light](https://github.com/user-attachments/assets/7e03fd75-248f-46f1-bd52-d4db88d7b62d)
| ![Longest integration name, 390px
light](https://github.com/user-attachments/assets/ce2073ec-0087-4bce-9023-edb37c04c0d3)
|

</details>

<details><summary>Enlarged text</summary>

| Banner at 200% text | Documentation at 200% text |
| --- | --- |
| ![Banner at 200% text,
390px](https://github.com/user-attachments/assets/7446c894-923e-46c0-a705-2417bfa8a274)
| ![Documentation at 200% text,
390px](https://github.com/user-attachments/assets/9f28bf51-e529-47ff-9fc0-7484ff06c063)
|

</details>

<details><summary>Desktop checks</summary>

| Homepage | Documentation |
| --- | --- |
| ![Homepage, 1440px
light](https://github.com/user-attachments/assets/8cbf19b3-66ba-4ae8-8616-5af76d1c2e1b)
| ![Documentation, 1440px
light](https://github.com/user-attachments/assets/93b0291b-ac68-44a7-841a-a6393585036b)
|

| API members | Homepage dark |
| --- | --- |
| ![API members, 1440px
light](https://github.com/user-attachments/assets/ea967af7-76c6-44c2-a579-8a6cc9e8d528)
| ![Homepage, 1440px
dark](https://github.com/user-attachments/assets/20627d06-91a7-44b9-aff6-93e9250d9dcb)
|

</details>

<details><summary>Final matched search and filter sizes</summary>

| Resource Hub mobile dark | Glossary mobile dark |
| --- | --- |
| ![Resource Hub, 390px
dark](https://github.com/user-attachments/assets/21477fa8-1b72-4113-bcec-8c208b833b19)
| ![Glossary, 390px
dark](https://github.com/user-attachments/assets/ff94b11f-b398-4447-b62d-7b74cea903d2)
|

| Resource Hub desktop light | Glossary desktop light |
| --- | --- |
| ![Resource Hub, 1440px
light](https://github.com/user-attachments/assets/10b17fe8-b745-485e-9207-a01cd1094439)
| ![Glossary, 1440px
light](https://github.com/user-attachments/assets/c975d0d7-10fb-485a-b0c5-6ea78052f4c8)
|

| Resource Hub desktop dark | Glossary desktop dark |
| --- | --- |
| ![Resource Hub, 1440px
dark](https://github.com/user-attachments/assets/a256f1f7-2c1e-4674-ac17-c994932bf7dd)
| ![Glossary, 1440px
dark](https://github.com/user-attachments/assets/2d3893c4-7ed1-490c-a780-b719130663cd)
|

</details>

## Third-party links and affiliations

<!--
List any third-party links added or changed by this pull request and
disclose any
material affiliation with the linked organizations, such as employment,
sponsorship, or ownership. Write "None" if this pull request doesn't add
or
change third-party links.
-->

None. Existing third-party destinations are preserved.

## Validation

<!-- List the checks you ran or explain why validation isn't needed. -->

Commands run from `src\frontend`:

- `pnpm exec vitest run --config vitest.config.ts` - **passed: 1,024
tests in 78 files; 1 intentionally skipped**, against the updated CI
base.
- `pnpm lint` - **passed**, including Astro synchronization,
skill-digest verification, and complete ESLint checking.
- `pnpm exec playwright test gallery-search-contract.spec.ts
dev-glossary.spec.ts dev-layout.spec.ts --workers=2 --reporter=list
--grep 'Hub search and glossary filters|glossary toolbar|typography and
glossary controls|full-size search input geometry|integration query,
facets'` - **passed: 16 tests; 2 intentionally skipped**, confirming
common Hub/Browse/Glossary/API sizing across phone, tablet, and desktop.
- `pnpm exec vitest run --config vitest.config.ts
tests\unit\search-presentation.vitest.test.ts
tests\unit\custom-components.vitest.test.ts
tests\unit\navigation-theme.vitest.test.ts` - **passed: 130 tests in 3
files** after the final sizing adjustment.
- `pnpm exec playwright test mobile-ux.spec.ts --workers=2
--reporter=list --grep 'breadcrumbs show|integration-card code
borders|secondary controls match'` - **passed: 9 tests**, checking
conventional hierarchy, 12px action padding, and matching light-theme
code borders.
- `pnpm exec playwright test mobile-ux.spec.ts
api-search-contract.spec.ts dev-glossary.spec.ts dev-grain.spec.ts
dev-layout.spec.ts dev-browse.spec.ts gallery-search-contract.spec.ts
site-search.spec.ts deployment-navigation.spec.ts
custom-components.spec.ts homepage.spec.ts ui-regressions.spec.ts
--workers=3 --reporter=list --grep 'API full-size input visual
parity|glossary toolbar|grain is fine|Dev Hub uses consistent|typography
and glossary|share content alignment|sidebar zero matches|native
Pagefind input presentation|same-deployment navigation|changed
deployment|missing deployment|samples grid hydrates|history returns
focus|localized navigation|section 08 pairs|compact editorial
rhythm|docs search survives|docs reading hierarchy|aligns the
scroll|breadcrumbs show|secondary controls match|integration-card code
borders|mobile controls and content'` - **77 passed; 8 skipped; 11
failed initially**. All failures were corrected and verified below; no
tests were disabled.
- `pnpm exec playwright test custom-components.spec.ts
dev-layout.spec.ts dev-glossary.spec.ts site-search.spec.ts --workers=2
--reporter=list --grep 'samples grid hydrates|typography and
glossary|glossary toolbar|Dev Hub uses consistent|docs search survives'`
- **passed: 16 tests; 2 intentionally skipped**, confirming corrected
disclosure, navigation, and responsive-loop behavior.
- `pnpm exec tsc --noEmit --pretty false` - **not clean: 239 existing
diagnostics**. Comparison with the prior verified baseline found 239
before and after, with no introduced diagnostics.

No local production build was run, in accordance with repository
guidance. Production search is a CI/preview check. Physical iPhone,
Android, and Safari checks were unavailable; browser emulation is not
device or accessibility certification.

### CI repairs

Correct production JSX-link underline scoping, Pagefind/catalog padding
parity, stale responsive assertions, hidden mobile-menu/sample-tag
interactions, and scroll-to-top geometry. The grain check retains strict
decoded interior pixels and all texture statistics; the prior mismatch
was only three outer-border pixels. The homepage editorial-height budget
excludes its independently changing announcement.

The updated base also had a failing dashboard-persistence test after its
documentation correctly moved the writable volume to `/home/app`.
Preserve the upstream example and correct only its two stale test
expectations. The feature branch was merged with current main, not
rebased or replaced.

Full remote production validation is tracked in [the final CI
run](https://github.com/microsoft/aspire.dev/actions/runs/38281519132).

---------

Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…e naming, and networking (#454)

Addresses gaps identified from 20K+ Discord community messages where
users had no documentation for several common AppHost scenarios.

## New pages

- **`app-host/resource-naming.mdx`** — How resource names map to env
vars (`ConnectionStrings__<name>`, `services__<name>__<endpoint>__0`),
the dash→underscore transformation (`my-service` →
`ConnectionStrings__my_service`), naming best practices (dashes
preferred, underscores valid), and resource name validation rules (links
to ASPIRE006 diagnostic).

- **`app-host/console-apps.mdx`** — Adding .NET console/worker projects
to AppHost via `AddProject`, plus links to `AddExecutable`,
`AddPythonApp`, and `AddNodeApp` for non-.NET apps. Covers wiring
service discovery on non-ASP.NET Core hosts, `BackgroundService`
patterns, `WithExplicitStart()` for interactive apps, and dashboard
console output.

- **`app-host/cors-configuration.mdx`** — When CORS is (and isn't)
needed with Aspire, ASP.NET Core Minimal API middleware setup with
`AddCors`/`UseCors`, environment-based origins, using
`WithReference(frontend)` to auto-inject the frontend URL into API CORS
config, common failure patterns (middleware ordering, preflight,
credentials), and dashboard CORS env var.

## Updated pages

- **`fundamentals/networking-overview.mdx`** — Two new sections:
- *Binding to all interfaces for LAN access* — 0.0.0.0 configuration for
ASP.NET Core projects, containers (clarifying `WithHttpEndpoint` maps
ports only; the app must also bind via `WithEnvironment`), and
executables
- *Container-to-host networking* — host gateway address platform table,
`WithReference` for automatic cross-platform host resolution,
`AddConnectionString` for existing host services, and
`KnownNetworkIdentifiers`

## Sidebar

Added all three new pages under the AppHost section in `docs.topics.ts`
with Japanese (`ja`) translations.

<!-- START COPILOT ORIGINAL PROMPT -->



<details>

<summary>Original prompt</summary>

> 
> ----
> 
> *This section details on the original issue you should resolve*
> 
> <issue_title>[Discord Feedback] App Model API gaps - CORS, console
apps, naming, networking</issue_title>
> <issue_description>## Summary
> 
> Based on analysis of 20,415 Discord messages + 147 #help threads from
the Aspire community (April 2025 - February 2026), several App Model API
features lack documentation.
> 
> ## Missing Documentation
> 
> ### 1. CORS Configuration (10+ questions)
> 
> **Current State:** Zero documentation
> 
> **Customer Quotes:**
> > "Wait.. hold on, hold on, hold on, hold on, hold on.... What? do we
need to configure cors?"
> 
> > "I seem to be having some CORS issues with a test deployment. Would
this also have to be something I configure somewhere in my project?"
> 
> **Requested Documentation:**
> - [ ] When CORS configuration is needed with Aspire
> - [ ] How to configure CORS for dev vs prod
> - [ ] Common CORS issues and solutions
> 
> ---
> 
> ### 2. Console Application Integration (17 questions)
> 
> **Customer Quotes:**
> > "if I want to hook up a Console project with Aspire, so that it can
still (maybe?) use service discovery, service defaults, etc. with Aspire
resources... is that possible?"
> 
> > "Colleague asked how to start a console app with aspire. I got it to
connect to another resource (redis) and write a kv.... but then was
wondering how to 'launch the console window' so one could interact with
Console.Readline."
> 
> **Requested Documentation:**
> - [ ] Adding Console apps to Aspire AppHost
> - [ ] Service discovery in Console apps (non-ASP.NET Core)
> - [ ] Background worker / hosted service patterns
> - [ ] Interactive console apps with stdin/stdout
> 
> ---
> 
> ### 3. Resource Naming Conventions
> 
> **Customer Quote:**
> > "How does `WithReference` treat names that have dashes? e.g.
`AddWhatever("my-service")` and then will it be like
`MY_SERVICE_[PROPERTY]`? Or `MY-SERVICE_[PROPERTY]`?"
> 
> **Requested Documentation:**
> - [ ] How resource names map to environment variables
> - [ ] Dashes → underscores transformation rules
> - [ ] Best practices for naming resources
> 
> ---
> 
> ### 4. Network Binding (0.0.0.0 / LAN Access)
> 
> **From #help thread:** "How to bind services to 0.0.0.0 for LAN
access?"
> 
> **Requested Documentation:**
> - [ ] Exposing services to external network
> - [ ] Binding to 0.0.0.0 vs localhost
> - [ ] LAN development scenarios
> 
> ---
> 
> ### 5. Container-to-Host Networking
> 
> **Customer Quote:**
> > "I'm struggling to get endpoints resolved in the context of a
container. If I use `KnownNetworkIdentifiers.LocalhostNetwork`, it
always comes back with localhost not `host.docker.internal`"
> 
> **From #help:** "Containers can't reach localhost SQL"
> 
> **Requested Documentation:**
> - [ ] `host.docker.internal` behavior
> - [ ] `KnownNetworkIdentifiers` enum usage
> - [ ] Container-to-localhost SQL Server connectivity
> 
> ---
> 
> ## Data Source
> 
> - **Discord channels:** #💫│general, #🔵│azure, #🔨│building-resources
> - **Help threads:** 147 analyzed from #🆘│help
> - **Total messages:** 20,415
> - **Date range:** April 2025 - February 2026</issue_description>
> 
> <agent_instructions>Please address this issue, while using the
`.github/skills/doc-writer/SKILL.md`. Be certain to also take into
account, related issues, pull requests, and comments that are directly
linked as well as comments.</agent_instructions>
> 
> ## Comments on the Issue (you are @copilot in this section)
> 
> <comments>
> </comments>
> 


</details>



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

- Fixes #327

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

✨ Let Copilot coding agent [set things up for
you](https://github.com/microsoft/aspire.dev/issues/new?title=✨+Set+up+Copilot+instructions&body=Configure%20instructions%20for%20this%20repository%20as%20documented%20in%20%5BBest%20practices%20for%20Copilot%20coding%20agent%20in%20your%20repository%5D%28https://gh.io/copilot-coding-agent-tips%29%2E%0A%0A%3COnboard%20this%20repo%3E&assignees=copilot)
— coding agent works faster and does higher quality work when set up for
your repo.

---------

Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Maddy Montaquila <maleger@microsoft.com>
Co-authored-by: Alistair Matthews <alistairwebdojo@live.com>
Copilot-Session: 0d21fabc-759d-45d9-b1fb-41733ff02aa0
## Summary

`Update Release Branch` currently fails on every push to `main` once a
merge into `release/X.Y` has a real conflict that the helper can't
auto-resolve (e.g. runs 38433783235 and 38436114463 on
`component-props.contracts.ts`). It stays red until someone notices and
repairs the branch by hand.

- The merge helper now exits `3` for "conflicts need human review"
(merge aborted, release untouched) instead of a generic failure.
- A new `--commit-conflicts` mode commits the merge with conflict
markers left in the unresolved files, keeping both parents, and writes
the conflicted paths to `$RELEASE_SYNC_CONFLICTS_FILE`.
- On exit `3` the workflow pushes a rolling `release-sync/X.Y` branch
and opens a **draft** PR into `release/X.Y` that lists the conflicts and
the "Create a merge commit, never squash" instructions. The run finishes
green with a warning and summary link.
- Before doing any work, the workflow checks for an open PR from
`release-sync/X.Y`. If one exists it skips the sync, so pushes to `main`
no longer repeat the same failure while a human resolves it. After the
repair merges, the next push resumes syncing.
- The app token now requests `pull-requests: write` (already granted for
`update-integration-data.yml`).

Non-conflict failures (push rejection, fatal git errors) still fail the
job as before. This is independent of #1701 (push-race retry) and #1666
(version config conflicts) and composes with them.

## Third-party links and affiliations

None

## Validation

- `bash .github/scripts/test-merge-main-into-release.sh`: all cases
pass, including new exit-code `3`, `--commit-conflicts` with conflicts,
and `--commit-conflicts` on a clean merge.
- `bash -n` on the three workflow `run` blocks (extracted from the
YAML): passed.
- `prettier --check` on the workflow: passed after `--write`.
- Dry run against the real `origin/release/17.0` and `origin/main` in a
temporary worktree: the default mode aborts with exit `3`, and
`--commit-conflicts` produces a two-parent merge listing
`src/frontend/tests/typecheck/component-props.contracts.ts` with a clean
working tree.
- Not run: the workflow end-to-end (PR creation and the skip check need
Actions with the app token).

---------

Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
## Summary

<!-- Describe what this pull request changes and why. -->

Adds a scheduled workflow that tells IndexNow search engines (Bing,
Yandex, Naver, Seznam, Yep, Amazon) about aspire.dev URLs, so new docs
are discovered quickly, especially right after a release ships.

**How it works** (`.github/workflows/indexnow.yml` +
`src/frontend/scripts/indexnow.ts`, also runnable locally with `pnpm
indexnow`)

- Every run reads the live sitemap (about 32k URLs) and compares it with
the URL list saved by the previous run. It sends **one request**
(IndexNow takes at most 10,000 URLs in one) with the removed and new
URLs first, then the next window of a rotation through the whole
sitemap: English pages, then the API reference, then localized pages.
- **Daily (06:43 UTC):** the window is 1,000 URLs. Its position is a
cursor over a stable order, so it survives pages being added or removed.
- **Release:** merging a `release/X.Y` pull request into `main` waits up
to 45 minutes for that release's "What's new" page to be live (the docs
slot swap), then starts a burst of up to 10,000 URLs per run that the
daily runs finish (about 4 runs today). After that the slow rotation
resumes. The sitemap has no `lastmod`, so the script can't tell an
updated page from an unchanged one; the burst sends all English pages
first, which is where the new and updated docs are.
- **Manual:** `workflow_dispatch` with `mode` (daily or flush), `limit`,
`release`, `dry_run` and `allow_shrink`.
- The state is a single `state.json` in the `indexnow-state` Actions
artifact (90 days). Losing it only causes a cold start that re-seeds the
known list without submitting everything.
- A failed request (a 429 included) fails the job and leaves the
progress alone, so the next run tries again. A failed flush still starts
its release pass, and a failed cold start still seeds the known list.

**What the script assumes about the site** (listed at the top of
`indexnow.ts`; everything else is in
`src/frontend/config/indexnow.json`)

- `/reference/api/` is the generated API reference, and the locale
folders in `config/locales.ts` hold the translations. Both are sent
after the English pages.
- Release X.Y is merged from a `release/X.Y` branch and publishes
`/whats-new/aspire-X-Y/` (`aspire-X` for X.0).

**No repository secret is needed.** An IndexNow key is public by design:
the key file has to be downloadable from the site root so engines can
verify ownership. The key is committed
(`src/frontend/config/indexnow.json` and
`src/frontend/public/<key>.txt`). The workflow only uses the automatic
token with `contents` and `actions` read access.

**Safety rails:** a key-file preflight (a cold start skips softly until
the key file has deployed), refusal of a sitemap that shrank by more
than 20% (`allow_shrink` overrides), state read from an artifact is
checked (and artifacts from fork runs are ignored), `--limit` is a hard
cap, and 5xx and network errors retry with back-off.

**Rollout**

1. Merge, and let the deploy publish
`https://aspire.dev/c5f794ab28dc0cb92f48bd970500daa3.txt` (until then
the first run skips).
2. Run the workflow manually with `dry_run` to see the plan.
3. The first real run seeds the state and submits the first 1,000-URL
window.
4. The next release merge triggers the burst, or dispatch `mode: flush`
with `release: X.Y`. Verify in Bing Webmaster Tools under IndexNow.

**Notes**

- IndexNow doesn't publish its rate limits, so the budgets (`release`
10,000 and `rotation` 1,000) live in `config/indexnow.json`. A test
keeps them within one request.
- A page that is new while a pass is running can be sent twice: when it
appears and when the rotation reaches it.
- The release-merge path (the `closed` pull request event) first runs on
the next release and can't be exercised before merging. The trigger
matches a merged pull request from `release/X.Y` in this repository,
which is what the 13.4, 13.5 and 13.6 content pull requests are. The
pull request that merges the release branch back is not a trigger; a
manual `flush` covers repairs.
- The job-level `concurrency` uses `queue: max`, which GitHub documents.
actionlint 1.7.12 doesn't know it yet, and the repository doesn't run
actionlint in CI.
- Follow-up: accurate `lastmod` values in the sitemap would let search
engines (Bing and Google use them to schedule crawls) and this script
tell updated pages apart.

## Third-party links and affiliations

<!--
List any third-party links added or changed by this pull request and
disclose any
material affiliation with the linked organizations, such as employment,
sponsorship, or ownership. Write "None" if this pull request doesn't add
or
change third-party links.
-->

- `https://www.indexnow.org/documentation` (referenced in a code
comment) and the `https://api.indexnow.org/indexnow` endpoint (in
`config/indexnow.json`) are the IndexNow protocol's documentation and
submission endpoint. IndexNow is an open protocol launched by Microsoft
Bing and Yandex, and aspire.dev is also a Microsoft site. This change
adds no sponsorship or other affiliation.

## Validation

<!-- List the checks you ran or explain why validation isn't needed. -->

From `src/frontend`:

- `pnpm exec vitest run --config vitest.config.ts
tests/unit/indexnow.vitest.test.ts`: passed, 83 tests.
- `pnpm test:unit`: passed, 81 files and 1,121 tests (1 skipped).
- `pnpm lint`: passed.
- `actionlint` 1.7.12 on the workflow, with the `queue: max` line
removed because actionlint doesn't know it: passed.
- Mutation checks: nine deliberate breakages of the behavior that
matters (a flush sending its new URLs ahead of its window, a failed
flush forgetting them, no shrink guard, a failed flush or cold start not
saving state, retrying client errors, no one-request clamp, state
entries not checked against the host, a fork's release pull request
accepted, a cold start not skipping while the key is missing) each fail
at least one test.
- Real data: the planner against the live sitemap (32,336 URLs) runs a
release burst in 4 requests (10,000, 10,000, 10,000 and 2,336 URLs),
covers every URL once, and sends all 611 English docs first (the 13.6
What's new page is at position 602 of day 1).
- The workflow's submit step run under bash with a stubbed `pnpm` for
the `schedule`, `pull_request` and `workflow_dispatch` triggers builds
the expected arguments.
- The real CLI against the live site as dry runs: a daily run plans
1,000 URLs, `--mode flush --release 13.6` plans 10,000, neither writes
state, and an invalid `--limit` exits 1. The 404 warning for the key
file is expected until it deploys.

Not run: `pnpm build` (left to CI), a real IndexNow submission (the key
file isn't deployed yet) and the pull-request-triggered path (first
exercised by the next release merge).

---------

Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
… docs (#1892)

## Summary

<!-- Describe what this pull request changes and why. -->

Removes packages that are deprecated, retired, or superseded from the
integration catalog, API reference data, and docs, so the gallery,
`/reference/api/`, and the integrations section stop advertising them.
NuGet deprecation flags alone missed most of these, so the audit also
used package READMEs and nuspecs, the Aspire CLI's hidden-package list,
Community Toolkit release notes, and the Toolkit source tree.

| Package | Why it's removed |
| --- | --- |
| `CommunityToolkit.Aspire.Hosting.Bun` | Deprecated on NuGet and in
Toolkit 13.4.0, removed from the Toolkit in 13.6.0. Bun support now
ships in `Aspire.Hosting.JavaScript`. |
| `Aspire.Hosting.GitHub.Models` | GitHub Models was retired on July 30,
2026. The package README says it's deprecated, and the Aspire CLI hides
it from `aspire add`. |
| `CommunityToolkit.Aspire.Hosting.Minio`,
`CommunityToolkit.Aspire.Minio.Client` | Deprecated in Toolkit 13.3.0,
removed in 13.6.0. |
| `CommunityToolkit.Aspire.Hosting.Python.Extensions` | Deprecated in
Toolkit 13.0.0. Use `Aspire.Hosting.Python`. |
| `CommunityToolkit.Aspire.Hosting.Dapr.AzureRedis` | Orphaned and
superseded by `Azure.Dapr` and `Azure.Dapr.Redis`. It has no source in
the Toolkit repository. |
| `CommunityToolkit.Aspire.Hosting.Java`,
`CommunityToolkit.Aspire.Hosting.Rust` | Deprecated in Toolkit 13.6.0 in
favor of the first-party `Aspire.Hosting.Java` and
`Aspire.Hosting.Rust`. |

**What changed** (all under `src/frontend/`)

- `scripts/update-integrations.ts`: added each package to
`EXCLUDED_PACKAGES`. The updater falls back to the newest non-deprecated
version, which is how Bun came back at 13.3.0, so the exclusion has to
be explicit.
- `src/data/aspire-integrations.json` (from 217 to 209 entries) and
`src/data/integration-docs.json` (from 165 to 160 mappings): removed the
entries.
- `src/data/pkgs/` and `src/data/ts-modules/`: deleted the C# and
TypeScript API data for the removed packages (14 files).
`src/data/twoslash/aspire.d.ts` is regenerated.
- `src/content/docs/integrations/ai/github-models/`: deleted the three
GitHub Models pages (get started, host, connect) and their sidebar group
in `config/sidebar/integrations.topics.ts`.
- `config/redirects.mjs`: the old GitHub Models URLs (the section root,
get started, host, connect, and the legacy `-client` route) now redirect
to the matching Microsoft Foundry pages instead of returning 404.
- `src/content/docs/whats-new/`: fixed links to the removed pages. The
13.6 note no longer links to the deleted migration guide, and the 13.2
connection-properties example drops "Connect to GitHub Models". The 9.4
and 9.5 notes linked to absolute `aspire.dev` URLs that would now land
on a Foundry page, so those links are removed.
- `src/assets/icons/`: deleted `github-icon.png` (only the removed pages
used it), plus `github-light-icon.png` and `minio-icon.png`, which the
home-page rail change orphaned.
- `HomeIntegrationRail.astro`: three tiles (GitHub, MinIO, Bun) no
longer matched any gallery entry, so they now show Apache Kafka,
ClickHouse, and PowerShell. That keeps 12 tiles per lane and 36 unique
names.
- The Bun, Python, Java, and Rust pages stay. They document the
first-party replacements and carry the Toolkit migration guidance.

**Review notes**

- Deleting the GitHub Models pages also removes the "Migrate Aspire apps
from GitHub Models" guide. The 13.5 and 13.6 what's-new notes still
announce the retirement and link to the Foundry integration. Say if
you'd rather fold a short migration section into the Foundry docs.
- `Dapr.AzureRedis`, Toolkit `Java`, and Toolkit `Rust` aren't flagged
on NuGet. Java and Rust are announced as deprecated but still publish
betas, so drop them from this PR if you'd rather wait for the Toolkit to
remove them.
- `rust-host.mdx` still points to the Toolkit Rust package for Bacon
support (`AddBaconApp`). That stays accurate while the package is on
NuGet.
- The home-page tile swap is a judgment call. Say if you'd prefer
different integrations.
- Checked and kept because they aren't deprecated: the Elasticsearch
packages (partner-maintained by Elastic), the Toolkit Dapr packages and
EF Core SQLite (preview-only since their last stable),
`Aspire.Hosting.DocumentDB`, and the 13.6.0 preview packages.

## Third-party links and affiliations

<!--
List any third-party links added or changed by this pull request and
disclose any
material affiliation with the linked organizations, such as employment,
sponsorship, or ownership. Write "None" if this pull request doesn't add
or
change third-party links.
-->

None.

## Validation

<!-- List the checks you ran or explain why validation isn't needed. -->

Run from `src/frontend/`:

- `pnpm test:unit`: passed (81 files, 1,121 tests, 1 skipped). Covers
the redirect, Astro config, resource catalog, API reference, TypeScript
API, Twoslash, and updater tests.
- `pnpm test:unit:structured-data`: passed (5 files, 99 tests).
- `pnpm validate:api-data`: passed (209 catalog package identities
reconciled, 140 TypeScript modules matched to C# provenance).
- `node scripts/generate-twoslash-types.ts`: succeeded and produced no
diff against the committed `aspire.d.ts`.
- `pnpm exec eslint config/redirects.mjs
config/sidebar/integrations.topics.ts --max-warnings 0`: passed.
- A script check that every home-page rail tile's search term still
matches at least one catalog entry: 36 tiles, 36 unique names, 0 dead
tiles.
- A script check of the docs removal: all 182 redirects resolve to an
existing page or another redirect, every integrations sidebar slug has a
page, and no docs page links internally to the removed `github-models`
URLs.

Not run locally: `pnpm build` (which runs the
`starlight-links-validator` link check) and the Playwright e2e suite. CI
covers them.

---------

Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2c9eea84-ba1a-4852-88a7-886ceddb7f4f
…erator (#1895)

## Summary

`Particular.Aspire.Hosting.ServicePlatform` (added in #1380) was removed
by the automated refresh in #1389, because `update-integrations.ts` only
searches for `owner:aspire`, `Aspire.Hosting.` and
`CommunityToolkit.Aspire`, and only keeps IDs starting with `aspire.` or
`communitytoolkit.aspire`. Re-adding the JSON entry by hand (see #1894)
would be reverted again on the next run.

This PR:

- Adds an explicit `THIRD_PARTY_PACKAGES` allow list to
`update-integrations.ts`, fetched from nuget.org by exact `packageid:`.
- Lets allow-listed IDs through `filterAndTransform` (still requires
verified and non-deprecated).
- Restores the catalog entry with current NuGet metadata (1.1.0).
- Adds unit tests for the allow list. The existing
`integration-docs.json` mapping keeps the card linking to
https://docs.particular.net/platform/aspire/; the package link continues
to go to NuGet.

Supersedes #1894.

## Third-party links and affiliations

None added beyond those already in #1380.

## Validation

`npx vitest run --config vitest.config.ts
tests/unit/update-integrations.vitest.test.ts` (48 passed). Confirmed
the nuget.org `packageid:` query returns the package as verified and
listed.

---------

Co-authored-by: David Pine <7679720+IEvangelist@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot AI 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.

🟡 Changes recommended

Missing-property access aborts API generation, and duplicate constants prevent TypeScript contract checking.

2 open findings
What changed in this PR

Documents the dashboard’s Spans overflow tooltip. The diff also expands integration catalog tooling and removes older integration documentation and generated API data.

Changes:

  • Explains the +N resource tooltip and reorders resource-naming examples.
  • Adds third-party catalog support and API-generation exclusions.
  • Removes selected integration data and redirects GitHub Models documentation to Microsoft Foundry.
File Description
src/​tools/​PackageJsonGenerator/​generate-package-json.ps1 Filters API-reference exclusions.
src/​frontend/​tests/​unit/​validate-generated-api-data.vitest.test.ts Tests excluded catalog entries.
src/​frontend/​tests/​unit/​update-integrations.vitest.test.ts Tests third-party catalog support.
src/​frontend/​tests/​typecheck/​component-props.contracts.ts Adds ReadableText contracts.
src/​frontend/​src/​data/​twoslash/​aspire.d.ts Removes corresponding API declarations.
src/​frontend/​src/​data/​ts-modules/​CommunityToolkit.Aspire.Hosting.Rust.13.5.0.json Removes Rust TypeScript metadata.
src/​frontend/​src/​data/​ts-modules/​CommunityToolkit.Aspire.Hosting.Python.Extensions.13.5.0.json Removes Python extensions TypeScript metadata.
src/​frontend/​src/​data/​ts-modules/​CommunityToolkit.Aspire.Hosting.Minio.13.5.0.json Removes MinIO TypeScript metadata.
src/​frontend/​src/​data/​ts-modules/​CommunityToolkit.Aspire.Hosting.Java.13.5.0.json Removes Java TypeScript metadata.
src/​frontend/​src/​data/​ts-modules/​CommunityToolkit.Aspire.Hosting.Bun.13.3.0.json Removes Bun TypeScript metadata.
src/​frontend/​src/​data/​ts-modules/​Aspire.Hosting.GitHub.Models.13.5.4.json Removes GitHub Models TypeScript metadata.
src/​frontend/​src/​data/​pkgs/​CommunityToolkit.Aspire.Minio.Client.13.5.0.json Removes MinIO client API metadata.
src/​frontend/​src/​data/​pkgs/​CommunityToolkit.Aspire.Hosting.Rust.13.5.0.json Removes Rust API metadata.
src/​frontend/​src/​data/​pkgs/​CommunityToolkit.Aspire.Hosting.Python.Extensions.13.5.0.json Removes Python extensions API metadata.
src/​frontend/​src/​data/​pkgs/​CommunityToolkit.Aspire.Hosting.Minio.13.5.0.json Removes MinIO hosting API metadata.
src/​frontend/​src/​data/​pkgs/​CommunityToolkit.Aspire.Hosting.Dapr.AzureRedis.9.1.1-beta.197.json Removes Dapr Azure Redis API metadata.
src/​frontend/​src/​data/​pkgs/​CommunityToolkit.Aspire.Hosting.Bun.13.3.0.json Removes Bun API metadata.
src/​frontend/​src/​data/​integration-docs.json Removes selected package mappings.
src/​frontend/​src/​data/​aspire-integrations.json Updates catalog membership.
src/​frontend/​src/​content/​docs/​whats-new/​aspire-9-5.mdx Removes GitHub Models documentation link.
src/​frontend/​src/​content/​docs/​whats-new/​aspire-9-4.mdx Unlinks GitHub Models mention.
src/​frontend/​src/​content/​docs/​whats-new/​aspire-13-6.mdx Removes migration-guide link.
src/​frontend/​src/​content/​docs/​whats-new/​aspire-13-2.mdx Removes GitHub Models connection link.
src/​frontend/​src/​content/​docs/​integrations/​ai/​github-models/​github-models-host.mdx Deletes hosting reference.
src/​frontend/​src/​content/​docs/​integrations/​ai/​github-models/​github-models-get-started.mdx Deletes migration guide.
src/​frontend/​src/​content/​docs/​integrations/​ai/​github-models/​github-models-connect.mdx Deletes connection guide.
src/​frontend/​src/​content/​docs/​dashboard/​explore.mdx Explains Spans overflow tooltip.
src/​frontend/​src/​content/​docs/​app-host/​resource-naming.mdx Places C# examples first.
src/​frontend/​src/​components/​home/​HomeIntegrationRail.astro Refreshes featured integrations.
src/​frontend/​scripts/​validate-generated-api-data.ts Allows API-reference exclusions.
src/​frontend/​scripts/​update-integrations.ts Adds third-party discovery and download parsing.
src/​frontend/​scripts/​update-integration-data.ps1 Skips excluded packages in version tracking.
src/​frontend/​config/​sidebar/​integrations.topics.ts Removes GitHub Models navigation.
src/​frontend/​config/​redirects.mjs Redirects GitHub Models pages to Foundry.

🧠 Review effort: Balanced


💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +80 to +84
const validReadableTextProps = { text: 'RedisResource.withModule' } satisfies PropsOf<typeof ReadableText>;
void validReadableTextProps;
// @ts-expect-error Identifier content is required and must remain a string.
const invalidReadableTextProps = { text: 123 } satisfies PropsOf<typeof ReadableText>;
void invalidReadableTextProps;
@(Get-Content $integrationsFile -Raw | ConvertFrom-Json)
# Entries marked `"apiReference": false` (third-party packages) are not documented here.
@(Get-Content $integrationsFile -Raw | ConvertFrom-Json |
Where-Object { $_.apiReference -ne $false })
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs-from-code Copilot initiated issue from dotnet/aspire repo

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants