Repository navigation
[docs] Document Traces page Spans column overflow tooltip - #1876
Open
aspire-repo-bot[bot] wants to merge 9 commits into
Open
aspire-repo-bot[bot] wants to merge 9 commits into
aspire-repo-bot[bot] wants to merge 9 commits into
Conversation
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
4 of 14 tasks
Contributor
Author
Frontend HTML artifact readyThe latest frontend build uploaded the 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>  </details> <details><summary>Documentation</summary> | Documentation landing | First-app tutorial | | --- | --- | |  |  | | CLI installation | CLI reference | | --- | --- | |  |  | </details> <details><summary>Integrations, dashboard, and deployment</summary> | Integrations landing | Integration gallery | | --- | --- | |  |  | | Redis integration guide | Dashboard landing | | --- | --- | |  |  |  </details> <details><summary>Community and media</summary> | Community landing | Live videos | | --- | --- | |  |  | | Contributors | Acknowledgements | | --- | --- | |  |  |  </details> <details><summary>Catalogs and resource hub</summary> | Samples | Sample details | | --- | --- | |  |  | | Container images | Hub with matched search height | | --- | --- | |  |  | | Resource browser | Glossary with matched filter heights | | --- | --- | |  |  |  </details> <details><summary>Localization and supporting pages</summary> | Release notes | Translation dashboard | | --- | --- | |  |  | | 404 | German tutorial | | --- | --- | |  |  |  </details> <details><summary>API reference</summary> | C# index | C# package | | --- | --- | |  |  | | C# type | C# members | | --- | --- | |  |  | | TypeScript index | TypeScript module | | --- | --- | |  |  | | TypeScript type | TypeScript member | | --- | --- | |  |  | </details> <details><summary>Expanded controls</summary> | Site menu | Documentation menu | | --- | --- | |  |  | | API sidebar | Open menu | | --- | --- | |  |  | | Share menu | Resource filters | | --- | --- | |  |  | | API versions | Sample tags | | --- | --- | |  |  | | Footer preferences | Language preferences | | --- | --- | |  |  | | Contained translation table | Long API parameters | | --- | --- | |  |  |  </details> <details><summary>Conventional page hierarchy</summary>  </details> <details><summary>Dark theme</summary> | Homepage | Integration gallery | | --- | --- | |  |  | | API members | Resource browser | | --- | --- | |  |  |  </details> <details><summary>Narrow phones</summary> | Homepage | CLI installation | | --- | --- | |  |  | | API parameter types | Translation table | | --- | --- | |  |  |  </details> <details><summary>Code and long labels</summary> | Compact code-copy control | Longest integration name | | --- | --- | |  |  | </details> <details><summary>Enlarged text</summary> | Banner at 200% text | Documentation at 200% text | | --- | --- | |  |  | </details> <details><summary>Desktop checks</summary> | Homepage | Documentation | | --- | --- | |  |  | | API members | Homepage dark | | --- | --- | |  |  | </details> <details><summary>Final matched search and filter sizes</summary> | Resource Hub mobile dark | Glossary mobile dark | | --- | --- | |  |  | | Resource Hub desktop light | Glossary desktop light | | --- | --- | |  |  | | Resource Hub desktop dark | Glossary desktop dark | | --- | --- | |  |  | </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>
Alistair Matthews (alistairmatthews)
marked this pull request as ready for review
October 16, 2026 13:13
Alistair Matthews (alistairmatthews)
requested review from
James Newton-King (JamesNK) and
Eric Erhardt (eerhardt)
as code owners
October 16, 2026 13:13
Contributor
There was a problem hiding this comment.
🟡 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
+Nresource 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 }) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Documents changes from microsoft/aspire#20840
@TessaIOTarget branch
Targeting
release/17.0based on the source PR milestone17.0(exact match found onmicrosoft/aspire.dev).Why this is needed
microsoft/aspire#20840 fixed an
ArgumentOutOfRangeExceptionthat 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:The existing
dashboard/explore.mdxpage 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+Nindicator, 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.