fix: broken links - #63
Conversation
David Pine (IEvangelist)
commented
Nov 18, 2025
- Upgrade packages
- Fix broken links
There was a problem hiding this comment.
Pull Request Overview
This PR upgrades frontend dependencies and fixes broken documentation links across the codebase. The changes primarily involve updating internal path references and converting relative documentation links to use the learn.microsoft.com domain.
Key Changes
- Upgraded 12 npm packages to their latest minor/patch versions (including astro, starlight, and several font/embed packages)
- Updated internal documentation paths from legacy locations (e.g.,
/fundamentals/to/get-started/,/deployment/to/architecture/) - Converted Microsoft .NET documentation links from relative paths to absolute learn.microsoft.com URLs
- Standardized anchor link formats in some documentation files
Reviewed Changes
Copilot reviewed 59 out of 60 changed files in this pull request and generated 11 comments.
Show a summary per file
| File | Description |
|---|---|
| package.json | Upgraded 12 dependencies to latest versions |
| package-lock.json | Updated lockfile with new dependency versions and transitive dependencies |
| aspire-13.mdx | Fixed anchor links with URL-encoded emojis and hyphens |
| keycloak.mdx | Updated paths from /fundamentals/external-parameters/ to /get-started/resources/ |
| seq.mdx | Updated container lifetime documentation path |
| nats.mdx | Converted .NET dependency injection link to learn.microsoft.com |
| apache-kafka.mdx | Updated paths and removed redundant aside block |
| nodejs-extensions.mdx | Updated orchestration documentation path |
| maui.mdx | Fixed Aspire 13 documentation path |
| sqlite.mdx | Converted SqliteConnection API link to learn.microsoft.com |
| sql-server.mdx | Updated multiple paths and converted API links to learn.microsoft.com |
| qdrant.mdx | Updated container lifetime and external parameters paths |
| oracle.mdx | Updated multiple paths and converted dependency injection links |
| mysql.mdx | Updated paths and converted keyed services links |
| mongodb.mdx | Updated paths and converted keyed services links |
| milvus.mdx | Updated container lifetime and external parameters paths |
| kurrentdb.mdx | Converted keyed services link to learn.microsoft.com |
| elasticsearch.mdx | Updated paths and converted keyed services links |
| kubernetes.mdx | Updated external parameters path |
| docker.mdx | Removed obsolete deployment documentation links |
| Azure integration files (18 files) | Updated paths to new documentation structure and converted API links |
| Caching integration files (5 files) | Changed connection guidance to use AsExisting instead of AddConnectionString |
| get-started files (3 files) | Fixed trailing slashes on internal links |
| diagnostics files (2 files) | Updated manifest format and resource naming paths |
| dashboard files (3 files) | Updated paths and converted .NET diagnostics links |
| contributor-guide.mdx | Fixed anchor links with URL-encoded emojis |
Files not reviewed (1)
- src/frontend/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ``` | ||
|
|
||
| 1. Make your changes, considering the [writing style guide](#-writing-style-guide) | ||
| 1. Make your changes, considering the [writing style guide](#%EF%B8%8F-writing-style-guide) |
There was a problem hiding this comment.
The anchor link uses URL encoding (%EF%B8%8F) which represents an emoji character. While this may work, it's unusual to have emojis in anchor links and could cause issues with some browsers or markdown parsers. Consider using plain text in the heading instead of emojis, or verify that this encoded emoji anchor is necessary.
| > 🧪 **Early Preview**: The pipeline APIs are in early preview and marked as experimental. See [aspire do command reference](/reference/cli/commands/aspire-do/) for more information. | ||
|
|
||
| For basic CLI commands and tooling, see [CLI and tooling](#cli-and-tooling), which covers [aspire init](#aspire-init-command), [aspire update](#aspire-update-improvements), and [non-interactive mode](#non-interactive-mode-for-cicd). | ||
| For basic CLI commands and tooling, see [CLI and tooling](#%EF%B8%8F-cli-and-tooling), which covers [aspire init](#aspire-init-command), [aspire update](#aspire-update-improvements), and [non-interactive mode](#non-interactive-mode-for-cicd). |
There was a problem hiding this comment.
The anchor link includes URL encoding (%EF%B8%8F) which represents an emoji character. While this may work, it's unusual to have emojis in anchor links and could cause issues with some browsers or markdown parsers. Consider using plain text in the heading instead of emojis, or verify that this encoded emoji anchor is necessary.
|
|
||
| > [!NOTE] | ||
| > To use most extension features, the Aspire 13.0 CLI must be installed and available on the user `PATH`. You can verify this by running `aspire --version` in a VS Code terminal. For installation steps, see [Upgrade to Aspire 13.0](#upgrade-to-aspire-130). | ||
| > To use most extension features, the Aspire 13.0 CLI must be installed and available on the user `PATH`. You can verify this by running `aspire --version` in a VS Code terminal. For installation steps, see [Upgrade to Aspire 13.0](#-upgrade-to-aspire-130). |
There was a problem hiding this comment.
The anchor link uses #-upgrade-to-aspire-130 (with a leading hyphen). This is inconsistent with typical anchor formatting. Verify that the target heading actually has this format, as it's unusual for markdown heading IDs to start with a hyphen.
|
|
||
| <Aside type="tip"> | ||
| If you'd rather connect to an existing Kafka server, call `AddConnectionString` instead. For more information, see [Reference existing resources](/fundamentals/app-host-overview/#reference-existing-resources). | ||
| If you'd rather connect to an existing Kafka server, call `AddConnectionString` instead. For more information on how to use `WithReference`, see [Resource dependencies](/get-started/resources/) and [Configuration injection](/get-started/app-host/). |
There was a problem hiding this comment.
The tip text has been significantly changed. The original mentioned AddConnectionString, but the new text suggests using WithReference instead. However, the new text also references two different documentation pages. This change seems to go beyond just fixing a broken link - it's changing the actual guidance. Consider whether this is the right fix or if it should reference a more specific page about connection strings.
|
|
||
| <Aside type="tip"> | ||
| If you'd rather connect to an existing Valkey instance, call `AddConnectionString` instead. For more information, see [Reference existing resources](/fundamentals/external-parameters/#reference-existing-resources). | ||
| If you'd rather connect to an existing Valkey instance, call `AsExisting` instead. |
There was a problem hiding this comment.
The tip now suggests using AsExisting instead of AddConnectionString, but doesn't provide a link to documentation. This is inconsistent with similar tips in other files (like garnet.mdx) that still mention documentation. Consider adding a reference link for consistency.
| If you'd rather connect to an existing Valkey instance, call `AsExisting` instead. | |
| If you'd rather connect to an existing Valkey instance, call [`AsExisting`](https://learn.microsoft.com/dotnet/aspire/hosting/api/Aspire.Hosting.Valkey.ValkeyResource#Aspire_Hosting_Valkey_ValkeyResource_AsExisting_) instead. |
|
|
||
| <Aside type="tip"> | ||
| If you'd rather connect to an existing Redis instance, call `AddConnectionString` instead. For more information, see [Reference existing resources](/fundamentals/external-parameters/#reference-existing-resources). | ||
| If you'd rather connect to an existing Redis instance, call `AsExisting` instead. |
There was a problem hiding this comment.
This tip now suggests using AsExisting instead of AddConnectionString without documentation. This is inconsistent with the pattern in garnet.mdx (line 46) which provides documentation links. Consider maintaining consistency across similar integration documentation.
| If you'd rather connect to an existing Redis instance, call `AsExisting` instead. | |
| If you'd rather connect to an existing Redis instance, call [`AsExisting`](https://learn.microsoft.com/dotnet/api/microsoft.aspire.hosting.redis.redisresource.asexisting) instead. |
| ``` | ||
|
|
||
| When you call `RunAsEmulator`, it configures your Service Bus resources to run locally using an emulator. The emulator in this case is the [Azure Service Bus Emulator](https://learn.microsoft.com/service-bus-messaging/overview-emulator). The Azure Service Bus Emulator provides a free local environment for testing your Azure Service Bus apps and it's a perfect companion to the Aspire Azure hosting integration. The emulator isn't installed; instead, it's accessible to Aspire as a container. When you add a container to the AppHost, as shown in the preceding example with the `mcr.microsoft.com/azure-messaging/servicebus-emulator` image (and the companion `mcr.microsoft.com/azure-sql-edge` image), it creates and starts the container when the AppHost starts. For more information, see [Container resource lifecycle](/fundamentals/orchestrate-resources/#container-resource-lifecycle). | ||
| When you call `RunAsEmulator`, it configures your Service Bus resources to run locally using an emulator. The emulator in this case is the [Azure Service Bus Emulator](https://learn.microsoft.com/service-bus-messaging/overview-emulator). ...'s a perfect companion to the Aspire Azure hosting integration. The emulator isn't installed; instead, it's accessible to Aspire as a container. When you add a container to the AppHost, as shown in the preceding example with the `mcr.microsoft.com/azure-messaging/servicebus-emulator` image (and the companion `mcr.microsoft.com/azure-sql-edge` image), it creates and starts the container when the AppHost starts. For more information, see [Container resource lifecycle](/architecture/resource-model/#built-in-resources-and-lifecycle). |
There was a problem hiding this comment.
There appears to be a typo in the middle of the sentence. The text "...it's a perfect companion..." seems to be missing the beginning part. The original text likely read "The Azure Service Bus Emulator provides a free local environment for testing your Azure Service Bus apps and it's a perfect companion..." but now appears as "...it's a perfect companion..." with three dots before it, suggesting incomplete editing.
| When you call `RunAsEmulator`, it configures your Service Bus resources to run locally using an emulator. The emulator in this case is the [Azure Service Bus Emulator](https://learn.microsoft.com/service-bus-messaging/overview-emulator). ...'s a perfect companion to the Aspire Azure hosting integration. The emulator isn't installed; instead, it's accessible to Aspire as a container. When you add a container to the AppHost, as shown in the preceding example with the `mcr.microsoft.com/azure-messaging/servicebus-emulator` image (and the companion `mcr.microsoft.com/azure-sql-edge` image), it creates and starts the container when the AppHost starts. For more information, see [Container resource lifecycle](/architecture/resource-model/#built-in-resources-and-lifecycle). | |
| When you call `RunAsEmulator`, it configures your Service Bus resources to run locally using an emulator. The emulator in this case is the [Azure Service Bus Emulator](https://learn.microsoft.com/service-bus-messaging/overview-emulator). The Azure Service Bus Emulator is a perfect companion to the Aspire Azure hosting integration. The emulator isn't installed; instead, it's accessible to Aspire as a container. When you add a container to the AppHost, as shown in the preceding example with the `mcr.microsoft.com/azure-messaging/servicebus-emulator` image (and the companion `mcr.microsoft.com/azure-sql-edge` image), it creates and starts the container when the AppHost starts. For more information, see [Container resource lifecycle](/architecture/resource-model/#built-in-resources-and-lifecycle). |
| [Azure Cosmos DB](https://learn.microsoft.com/cosmos-db) is a globally distributed, multi-model database service. The Aspire Azure Cosmos DB integration enables you to connect to Azure Cosmos DB NoSQL databases from your applications. | ||
|
|
||
| If you're looking for the Entity Framework Core integration, see [Aspire Cosmos DB Entity Framework Core integration](/integrations/databases/cosmos-db-extensions/). | ||
| If you're looking for the Entity Framework Core integration, see [Aspire Cosmos DB Entity Framework Core integration](/integrations/cloud/azure/azure-cosmos-db/). |
There was a problem hiding this comment.
This link creates a circular reference. The text says "If you're looking for the Entity Framework Core integration, see Aspire Cosmos DB Entity Framework Core integration." but this link points to the same page (azure-cosmos-db.mdx). This should point to a different page about the Entity Framework Core integration, not to itself.
| If you're looking for the Entity Framework Core integration, see [Aspire Cosmos DB Entity Framework Core integration](/integrations/cloud/azure/azure-cosmos-db/). | |
| If you're looking for the Entity Framework Core integration, see [Aspire Cosmos DB Entity Framework Core integration](/integrations/cloud/azure/azure-cosmos-db-efcore/). |
|
|
||
| <Aside type="tip"> | ||
| If you'd rather connect to an existing Redis instance, call `AddConnectionString` instead. For more information, see [Reference existing resources](/fundamentals/external-parameters/#reference-existing-resources). | ||
| If you'd rather connect to an existing Redis instance, call `AsExisting` instead. |
There was a problem hiding this comment.
This tip now suggests using AsExisting instead of AddConnectionString without documentation. This is inconsistent with the pattern in garnet.mdx (line 46) which provides documentation links. Consider maintaining consistency across similar integration documentation.
| If you'd rather connect to an existing Redis instance, call `AsExisting` instead. | |
| If you'd rather connect to an existing Redis instance, call [`AsExisting`](https://learn.microsoft.com/dotnet/api/microsoft.aspire.hosting.redisresource.asexisting) instead. |
| 1. Fork the repository | ||
|
|
||
| As mentioned in the [Local dev setup](#-local-dev-setup) section, start by forking the `aspire.dev` repository to your own GitHub account | ||
| As mentioned in the [Local dev setup](#%EF%B8%8F-local-dev-setup) section, start by forking the `aspire.dev` repository to your own GitHub account |
There was a problem hiding this comment.
The anchor link uses URL encoding (%EF%B8%8F) which represents an emoji character. While this may work, it's unusual to have emojis in anchor links and could cause issues with some browsers or markdown parsers. Consider using plain text in the heading instead of emojis, or verify that this encoded emoji anchor is necessary.
| As mentioned in the [Local dev setup](#%EF%B8%8F-local-dev-setup) section, start by forking the `aspire.dev` repository to your own GitHub account | |
| As mentioned in the [Local dev setup](#local-dev-setup) section, start by forking the `aspire.dev` repository to your own GitHub account |