Add explicit resource icons to hosting integrations - #1612
Merged
Merged
Conversation
Adds .WithIconName(...) annotations to resources across 45 hosting integration packages that previously had no explicit dashboard icon, so they no longer fall back to generic type-based heuristics in the Aspire dashboard (mirrors microsoft/aspire#18954 upstream). Icon names were verified against the FluentUI Filled icon set the dashboard resolves against, and language-runtime resources use the dedicated Code*Rectangle icons where one exists (C#, F#, JS, Python, Ruby, TS, VB), falling back to a generic icon for Go/Rust/Perl/PowerShell which have no dedicated icon. Verified by running example AppHosts for a representative sample across each icon category (database, message broker, storage, language runtime, identity, feature flag, performance testing, payments) and confirming the correct icon renders in the dashboard. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
afscrome
requested review from
Alirexaa,
FullStackChef,
Odonno,
Omnideth,
WhitWaldo,
aviv86,
esskar,
fboucher,
karmeli87,
oising,
paule96,
ppekrol,
shiranshalom,
tamirdresher and
tommasodotNET
as code owners
September 22, 2026 22:51
Contributor
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.sh | bash -s -- 1612Or
iex "& { $(irm https://raw.githubusercontent.com/CommunityToolkit/Aspire/main/eng/scripts/dogfood-pr.ps1) } 1612" |
Contributor
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
No unresolved blocking issues were identified.
Review effort: Lite
Findings: None
What changed in this PR
Adds explicit Fluent UI dashboard icons across 45 hosting integration packages, replacing generic resource-type fallbacks without changing runtime behavior.
Changes:
- Annotates services, runtimes, child resources, and companion tools with semantic icons.
- Preserves existing lifecycle, endpoint, health-check, and manifest behavior.
- Adds no public API or functional behavior changes.
| File | Change |
|---|---|
src/CommunityToolkit.Aspire.Hosting.Zitadel/ZitadelHostingExtensions.cs |
Adds identity icon. |
src/CommunityToolkit.Aspire.Hosting.Umami/UmamiBuilderExtensions.cs |
Adds analytics icon. |
src/CommunityToolkit.Aspire.Hosting.SurrealDb/SurrealDbBuilderExtensions.cs |
Adds database and UI icons. |
src/CommunityToolkit.Aspire.Hosting.Stripe/StripeExtensions.cs |
Adds payment icon. |
src/CommunityToolkit.Aspire.Hosting.StableDiffusionCpp/StableDiffusionCppResourceBuilderExtensions.cs |
Adds AI/image icons. |
src/CommunityToolkit.Aspire.Hosting.Squad/SquadBuilderExtensions.cs |
Adds team icon. |
src/CommunityToolkit.Aspire.Hosting.Solr/SolrBuilderExtensions.cs |
Adds search database icon. |
src/CommunityToolkit.Aspire.Hosting.Sftp/SftpHostingExtensions.cs |
Adds storage icon. |
src/CommunityToolkit.Aspire.Hosting.SeaweedFS/SeaweedFSBuilderExtensions.cs |
Adds storage icon. |
src/CommunityToolkit.Aspire.Hosting.RustFs/RustFsBuilderExtensions.cs |
Adds storage and bucket icons. |
src/CommunityToolkit.Aspire.Hosting.Rust/RustAppHostingExtension.cs |
Adds runtime icon. |
src/CommunityToolkit.Aspire.Hosting.RedPanda/RedPandaBuilderExtensions.cs |
Adds broker and UI icons. |
src/CommunityToolkit.Aspire.Hosting.RavenDB/RavenDBBuilderExtensions.cs |
Adds server and database icons. |
src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvicornAppHostingExtension.cs |
Adds Python runtime icon. |
src/CommunityToolkit.Aspire.Hosting.Python.Extensions/UvAppHostingExtension.cs |
Adds Python runtime icon. |
src/CommunityToolkit.Aspire.Hosting.Python.Extensions/StreamlitAppHostingExtension.cs |
Adds Python runtime icon. |
src/CommunityToolkit.Aspire.Hosting.PowerShell/PowerShellRunspacePoolResourceBuilderExtensions.cs |
Adds console icon. |
src/CommunityToolkit.Aspire.Hosting.PowerShell/DistributedApplicationBuilderExtensions.cs |
Adds console icon. |
src/CommunityToolkit.Aspire.Hosting.Posta/PostaHostingExtensions.cs |
Adds mail icon. |
src/CommunityToolkit.Aspire.Hosting.Perl/PerlAppResourceBuilderExtensions.PackageManager.cs |
Adds installer icons. |
src/CommunityToolkit.Aspire.Hosting.Perl/PerlAppResourceBuilderExtensions.cs |
Adds runtime icon. |
src/CommunityToolkit.Aspire.Hosting.PapercutSmtp/PapercutSmtpHostingExtension.cs |
Adds mail icon. |
src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceBuilderExtensions.OpenWebUI.cs |
Adds chat icon. |
src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceBuilderExtensions.Model.cs |
Adds AI model icon. |
src/CommunityToolkit.Aspire.Hosting.Ollama/OllamaResourceBuilderExtensions.cs |
Adds AI service icons. |
src/CommunityToolkit.Aspire.Hosting.Ngrok/NgrokExtensions.cs |
Adds tunnel icon. |
src/CommunityToolkit.Aspire.Hosting.Mosquitto/MosquittoBuilderExtensions.cs |
Adds broker icon. |
src/CommunityToolkit.Aspire.Hosting.Meilisearch/MeilisearchBuilderExtensions.cs |
Adds search database icon. |
src/CommunityToolkit.Aspire.Hosting.McpInspector/McpInspectorResourceBuilderExtensions.cs |
Adds tool icon. |
src/CommunityToolkit.Aspire.Hosting.MailPit/MailPitHostingExtension.cs |
Adds mail icon. |
src/CommunityToolkit.Aspire.Hosting.Logto/LogtoBuilderExtensions.cs |
Adds identity icon. |
src/CommunityToolkit.Aspire.Hosting.Listmonk/ListmonkBuilderExtensions.cs |
Adds messaging icon. |
src/CommunityToolkit.Aspire.Hosting.LavinMQ/LavinMQHostingExtension.cs |
Adds broker icon. |
src/CommunityToolkit.Aspire.Hosting.KurrentDB/KurrentDBBuilderExtensions.cs |
Adds database icon. |
src/CommunityToolkit.Aspire.Hosting.Kind/KubernetesEnvironmentKindExtensions.cs |
Adds cluster icon. |
src/CommunityToolkit.Aspire.Hosting.Kind/KindManifestResourceBuilderExtensions.cs |
Adds manifest icon. |
src/CommunityToolkit.Aspire.Hosting.Kind/KindHelmChartResourceBuilderExtensions.cs |
Adds chart icon. |
src/CommunityToolkit.Aspire.Hosting.Kind/KindClusterResourceBuilderExtensions.cs |
Adds cluster icon. |
src/CommunityToolkit.Aspire.Hosting.k6/K6BuilderExtensions.cs |
Adds load-testing icon. |
src/CommunityToolkit.Aspire.Hosting.Golang/GolangAppHostingExtension.cs |
Adds Go runtime and installer icons. |
src/CommunityToolkit.Aspire.Hosting.GoFeatureFlag/GoFeatureFlagBuilderExtensions.cs |
Adds feature-flag icon. |
src/CommunityToolkit.Aspire.Hosting.Flyway/DistributedApplicationBuilderExtensions.cs |
Adds migration icon. |
src/CommunityToolkit.Aspire.Hosting.Flagd/FlagdBuilderExtensions.cs |
Adds feature-flag icon. |
src/CommunityToolkit.Aspire.Hosting.Elasticsearch.Extensions/ElasticvueBuilderExtensions.cs |
Adds database UI icon. |
src/CommunityToolkit.Aspire.Hosting.DuckDB/DuckDBResourceBuilderExtensions.cs |
Adds database icon. |
src/CommunityToolkit.Aspire.Hosting.Deno/DenoAppHostingExtensions.cs |
Adds runtime and installer icons. |
src/CommunityToolkit.Aspire.Hosting.Dapr/IDistributedApplicationComponentBuilderExtensions.cs |
Adds sidecar icon. |
src/CommunityToolkit.Aspire.Hosting.Dapr/IDistributedApplicationBuilderExtensions.cs |
Adds component icon. |
src/CommunityToolkit.Aspire.Hosting.Bitwarden.SecretManager/BitwardenSecretManagerExtensions.cs |
Adds vault and secret icons. |
src/CommunityToolkit.Aspire.Hosting.Azure.Extensions/AzureStorageExplorerBuilderExtensions.cs |
Adds storage icon. |
src/CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder/DataApiBuilderHostingExtension.cs |
Adds database-link icon. |
src/CommunityToolkit.Aspire.Hosting.Azure.Dapr/AzureDaprHostingExtensions.cs |
Adds component icon. |
src/CommunityToolkit.Aspire.Hosting.ActiveMQ/ActiveMQBuilderExtensions.cs |
Adds broker icon. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
afscrome
enabled auto-merge (squash)
September 22, 2026 23:00
Contributor
|
tommasodotNET
approved these changes
Sep 22, 2026
Odonno
approved these changes
Sep 23, 2026
This was referenced Oct 1, 2026
Bump CommunityToolkit.Aspire.Hosting.Ollama from 13.6.0-beta.910 to 13.6.0
intochat/digitalbrain#113
Closed
This was referenced Oct 2, 2026
Open
This branch was successfully deployed
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.
Overview
Adds
.WithIconName(...)annotations to resources across 45 hosting integration packages in this repo that previously had no explicit dashboard icon, so they no longer fall back to generic type-based heuristics in the Aspire dashboard (container → box, project → code, etc.). This mirrors dotnet/aspire#18954, which did the same for all upstream Aspire hosting packages.8 packages already had icons set (Adminer, DbGate, Dbx, Java, JavaScript.Extensions, K3s, OpenTelemetryCollector, SqlDatabaseProjects) and were left untouched. Packages that only extend upstream resources (MongoDB.Extensions, MySql.Extensions, PostgreSQL.Extensions, SqlServer.Extensions, Redis.Extensions, Keycloak.Extensions, Azure.Dapr.Redis) don't define new resource types, so nothing to add there either — those resources already got icons from the upstream PR.
Icon selection
Icon names were verified directly against the FluentUI Filled icon set the dashboard resolves against (via the
Microsoft.FluentUI.AspNetCore.Components.Icons.Filledassembly metadata), not guessed. Semantics roughly follow the mapping used upstream:Database,DatabaseMultiple,DatabaseSearch,WindowDatabase(admin UIs)MailMultiple/MailBrainCircuit,ImageSparkleHardDrive,FolderOpenPersonLock,Vault,LockClosedCode*Rectangleicons where they exist (CodePyRectanglefor Python.Extensions,CodeTsRectanglefor Deno — matching the existingCodeJsRectangleused by JavaScript.Extensions and upstream'sCodeCsRectanglefor .NET projects); falls back to genericCode/WindowConsolefor Go, Rust, Perl and PowerShell, which have no dedicated FluentUI iconFlag(feature flags),TopSpeed(k6),Payment(Stripe),PeopleTeam(Squad),PuzzlePiece/Cube(Dapr),ChartMultiple(Umami),GlobeArrowForward(Ngrok),ServerMultiple/Archive(Kind)Verification
CommunityToolkit.Aspire.slnxsolution builds clean.Note for maintainers
K3sClusterResourcecurrently uses.WithIconName("Kubernetes"), which is not a real FluentUI icon name and will silently fail to resolve in the dashboard. Left untouched here since it's an existing icon rather than a missing one, but flagging it as a possible follow-up.PR Checklist
main)WithIconNameis an existing upstream Aspire API)Other information
No tests were added since this only attaches an existing, already-tested extension method (
WithIconName) to existing resource-construction call sites — there's no new behavior to unit test beyond whatAspire.Hosting's ownWithIconNametests already cover.🤖 Generated with Claude Code