Enable Native AOT dashboard with Fluent UI v5 - #19565
Enable Native AOT dashboard with Fluent UI v5#19565James Newton-King (JamesNK) wants to merge 15 commits into
Conversation
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 19565Or
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 19565" |
There was a problem hiding this comment.
Pull request overview
Migrates the Dashboard to Fluent UI v5 and .NET 11 Native AOT, including native bundle discovery, packaging, launch paths, and compatibility fallbacks.
Changes:
- Migrates Dashboard components, styling, serialization, and tests to Fluent UI v5.
- Packages and launches a standalone Native AOT Dashboard across supported platforms.
- Updates CI, signing, dependencies, localization, and bundle tooling.
Reviewed changes
Copilot reviewed 287 out of 289 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
.github/actions/select-tests/action.yml |
Installs required runtime. |
.github/workflows/build-cli-native-archives.yml |
Tests native Dashboard archives. |
.github/workflows/tests.yml |
Updates ARM build runner. |
Directory.Build.props |
Updates Dashboard TFM path. |
Directory.Packages.props |
Updates Fluent UI dependencies. |
NuGet.config |
Adds approved .NET 11 feed. |
THIRD-PARTY-NOTICES.TXT |
Adds IMask notice. |
benchmarks/Aspire.Dashboard.Benchmarks/Aspire.Dashboard.Benchmarks.csproj |
Targets .NET 11. |
docs/specs/bundle.md |
Documents native Dashboard layout. |
eng/Bundle.proj |
Publishes native Dashboard. |
eng/Signing.props |
Signs Dashboard executables. |
eng/Versions.props |
Defines .NET 11 versions. |
eng/clipack/Common.projitems |
Packages native bundle payload. |
eng/dashboardpack/Common.projitems |
Packages Dashboard artifacts. |
eng/dashboardpack/Sdk.targets |
Exposes Dashboard executable path. |
eng/pipelines/azure-pipelines.yml |
Carries Dashboard artifacts. |
eng/pipelines/templates/build_sign_native.yml |
Builds and signs Dashboard. |
eng/scripts/download-native-archives.ps1 |
Downloads Dashboard artifacts. |
eng/scripts/test-native-dashboard.ps1 |
Smoke-tests native Dashboard. |
global.json |
Selects .NET 11 SDK. |
playground/Directory.Build.targets |
Updates playground Dashboard path. |
src/Aspire.Cli/Bundles/BundleService.cs |
Handles Dashboard bundle component. |
src/Aspire.Cli/Commands/DashboardRunCommand.cs |
Launches native Dashboard. |
src/Aspire.Cli/Layout/LayoutConfiguration.cs |
Resolves Dashboard executable. |
src/Aspire.Cli/Layout/LayoutDiscovery.cs |
Discovers Dashboard bundle. |
src/Aspire.Cli/Profiling/ProfileCaptureService.cs |
Profiles native Dashboard. |
src/Aspire.Cli/Projects/DotNetAppHostProject.cs |
Passes bundle paths. |
src/Aspire.Cli/Projects/DotNetBasedAppHostServerProject.cs |
Passes Dashboard environment. |
src/Aspire.Cli/Projects/PrebuiltAppHostServer.cs |
Configures native Dashboard. |
src/Aspire.Cli/Resources/DashboardCommandStrings.resx |
Updates launch messages. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.cs.xlf |
Updates Czech localization. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.de.xlf |
Updates German localization. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.es.xlf |
Updates Spanish localization. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.fr.xlf |
Updates French localization. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.it.xlf |
Updates Italian localization. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.ja.xlf |
Updates Japanese localization. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.ko.xlf |
Updates Korean localization. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.pl.xlf |
Updates Polish localization. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.pt-BR.xlf |
Updates Portuguese localization. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.ru.xlf |
Updates Russian localization. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.tr.xlf |
Updates Turkish localization. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.zh-Hans.xlf |
Updates Chinese localization. |
src/Aspire.Cli/Resources/xlf/DashboardCommandStrings.zh-Hant.xlf |
Updates Chinese localization. |
src/Aspire.Dashboard/Api/TelemetryApiService.cs |
Uses generated serialization. |
src/Aspire.Dashboard/Aspire.Dashboard.csproj |
Enables .NET 11 AOT. |
src/Aspire.Dashboard/BlazorAssets.targets |
Manages Blazor static assets. |
src/Aspire.Dashboard/Components/App.razor |
Updates Fluent bootstrap. |
src/Aspire.Dashboard/Components/BlazorScript.razor |
Selects Blazor script. |
src/Aspire.Dashboard/Components/Controls/AspireMenu.razor |
Migrates menu rendering. |
src/Aspire.Dashboard/Components/Controls/AspireMenu.razor.cs |
Implements v5 menu lifecycle. |
src/Aspire.Dashboard/Components/Controls/AspireMenuButton.razor |
Migrates menu button. |
src/Aspire.Dashboard/Components/Controls/AspireMenuButton.razor.cs |
Updates menu state handling. |
src/Aspire.Dashboard/Components/Controls/Chart/ChartContainer.razor |
Migrates chart controls. |
src/Aspire.Dashboard/Components/Controls/Chart/ChartContainer.razor.cs |
Updates chart interactions. |
src/Aspire.Dashboard/Components/Controls/Chart/ChartFilterPopover.razor |
Migrates filter popover. |
src/Aspire.Dashboard/Components/Controls/Chart/ChartFilterTags.razor |
Migrates filter tags. |
src/Aspire.Dashboard/Components/Controls/Chart/ChartFilterTags.razor.cs |
Updates tag behavior. |
src/Aspire.Dashboard/Components/Controls/Chart/ChartFilters.razor |
Migrates chart filters. |
src/Aspire.Dashboard/Components/Controls/Chart/MetricTable.razor |
Migrates metric grid. |
src/Aspire.Dashboard/Components/Controls/Chart/MetricTable.razor.cs |
Updates metric grid logic. |
src/Aspire.Dashboard/Components/Controls/ClearSignalsButton.razor |
Migrates clear menu. |
src/Aspire.Dashboard/Components/Controls/DashboardMessageBar.razor |
Uses Fluent message bars. |
src/Aspire.Dashboard/Components/Controls/DashboardMessageBar.razor.css |
Styles message bars. |
src/Aspire.Dashboard/Components/Controls/DetailView.razor |
Migrates detail layout. |
src/Aspire.Dashboard/Components/Controls/ExceptionDetails.razor |
Migrates exception display. |
src/Aspire.Dashboard/Components/Controls/FluentIconSwitch.razor |
Updates switch icons. |
src/Aspire.Dashboard/Components/Controls/Grid/AspireFluentDataGrid.cs |
Adapts Fluent data grid. |
src/Aspire.Dashboard/Components/Controls/Grid/AspirePropertyColumn.cs |
Adapts property columns. |
src/Aspire.Dashboard/Components/Controls/Grid/AspireTemplateColumn.cs |
Adapts template columns. |
src/Aspire.Dashboard/Components/Controls/GridValue.razor |
Migrates grid values. |
src/Aspire.Dashboard/Components/Controls/IconCheckbox.razor.cs |
Updates checkbox behavior. |
src/Aspire.Dashboard/Components/Controls/InteractionInputField.razor |
Migrates interaction inputs. |
src/Aspire.Dashboard/Components/Controls/InteractionInputField.razor.cs |
Updates input logic. |
src/Aspire.Dashboard/Components/Controls/LogLevelSelect.razor |
Migrates log selector. |
src/Aspire.Dashboard/Components/Controls/LogViewer.razor.css |
Updates log styling. |
src/Aspire.Dashboard/Components/Controls/PauseIncomingDataSwitch.razor |
Migrates pause switch. |
src/Aspire.Dashboard/Components/Controls/PropertyGrid.razor |
Migrates property grid. |
src/Aspire.Dashboard/Components/Controls/PropertyGrid.razor.cs |
Updates property grid logic. |
src/Aspire.Dashboard/Components/Controls/PropertyValues/IconValue.razor |
Updates icon values. |
src/Aspire.Dashboard/Components/Controls/PropertyValues/ResourceNameButtonValue.razor |
Updates resource links. |
src/Aspire.Dashboard/Components/Controls/PropertyValues/SpanIdButtonValue.razor |
Updates span links. |
src/Aspire.Dashboard/Components/Controls/PropertyValues/SpanKindValue.razor |
Updates span-kind display. |
src/Aspire.Dashboard/Components/Controls/PropertyValues/TraceIdButtonValue.razor |
Updates trace links. |
src/Aspire.Dashboard/Components/Controls/ResourceActions.razor |
Migrates resource actions. |
src/Aspire.Dashboard/Components/Controls/ResourceActions.razor.css |
Styles resource actions. |
src/Aspire.Dashboard/Components/Controls/ResourceDetails.razor |
Migrates resource details. |
src/Aspire.Dashboard/Components/Controls/ResourceDetails.razor.cs |
Updates resource details logic. |
src/Aspire.Dashboard/Components/Controls/ResourceDetails.razor.css |
Styles resource details. |
src/Aspire.Dashboard/Components/Controls/ResourceSelect.razor |
Migrates resource selector. |
src/Aspire.Dashboard/Components/Controls/ResourceSelect.razor.cs |
Updates selector behavior. |
src/Aspire.Dashboard/Components/Controls/ResourceSelectOptionTemplate.razor |
Updates selector options. |
src/Aspire.Dashboard/Components/Controls/SpanActions.razor |
Migrates span actions. |
src/Aspire.Dashboard/Components/Controls/SpanDetails.razor |
Migrates span details. |
src/Aspire.Dashboard/Components/Controls/SpanDetails.razor.cs |
Updates span details logic. |
src/Aspire.Dashboard/Components/Controls/SpanDetails.razor.css |
Styles span details. |
src/Aspire.Dashboard/Components/Controls/SpanTypeSelect.razor |
Migrates span selector. |
src/Aspire.Dashboard/Components/Controls/StructuredLogActions.razor |
Migrates log actions. |
src/Aspire.Dashboard/Components/Controls/StructuredLogDetails.razor |
Migrates log details. |
src/Aspire.Dashboard/Components/Controls/StructuredLogDetails.razor.css |
Styles log details. |
src/Aspire.Dashboard/Components/Controls/SummaryDetailsView.razor |
Migrates splitter layout. |
src/Aspire.Dashboard/Components/Controls/SummaryDetailsView.razor.cs |
Handles v5 splitter sizing. |
src/Aspire.Dashboard/Components/Controls/SummaryDetailsView.razor.css |
Styles splitter layout. |
src/Aspire.Dashboard/Components/Controls/TraceActions.razor |
Migrates trace actions. |
src/Aspire.Dashboard/Components/Controls/TreeGenAISelector.razor |
Migrates GenAI tree. |
src/Aspire.Dashboard/Components/Controls/TreeGenAISelector.razor.cs |
Updates GenAI selection. |
src/Aspire.Dashboard/Components/Controls/TreeMetricSelector.razor |
Migrates metric tree. |
src/Aspire.Dashboard/Components/Controls/TreeMetricSelector.razor.cs |
Updates metric selection. |
src/Aspire.Dashboard/Components/Controls/UserProfile.razor |
Migrates profile menu. |
src/Aspire.Dashboard/Components/DashboardComponentActivator.cs |
Adds AOT-safe activation. |
src/Aspire.Dashboard/Components/Dialogs/AIAgentsDialog.razor |
Migrates agents dialog. |
src/Aspire.Dashboard/Components/Dialogs/AIAgentsDialog.razor.cs |
Updates agents dialog logic. |
src/Aspire.Dashboard/Components/Dialogs/ExemplarsDialog.razor |
Migrates exemplars dialog. |
src/Aspire.Dashboard/Components/Dialogs/FilterDialog.razor |
Migrates filter dialog. |
src/Aspire.Dashboard/Components/Dialogs/FilterDialog.razor.cs |
Updates filter dialog logic. |
src/Aspire.Dashboard/Components/Dialogs/GenAIVisualizerDialog.razor |
Migrates GenAI dialog. |
src/Aspire.Dashboard/Components/Dialogs/GenAIVisualizerDialog.razor.cs |
Updates GenAI dialog logic. |
src/Aspire.Dashboard/Components/Dialogs/HelpDialog.razor |
Migrates help dialog. |
src/Aspire.Dashboard/Components/Dialogs/InteractionMessageBoxDialog.razor |
Migrates message dialog. |
src/Aspire.Dashboard/Components/Dialogs/InteractionsInputDialog.razor |
Migrates input dialog. |
src/Aspire.Dashboard/Components/Dialogs/InteractionsInputDialog.razor.cs |
Updates input dialog logic. |
src/Aspire.Dashboard/Components/Dialogs/InteractionsInputDialog.razor.css |
Styles input dialog. |
src/Aspire.Dashboard/Components/Dialogs/InteractionsProgressDialog.razor |
Migrates progress dialog. |
src/Aspire.Dashboard/Components/Dialogs/InteractionsProgressDialog.razor.cs |
Updates progress dialog logic. |
src/Aspire.Dashboard/Components/Dialogs/ManageDataDialog.razor |
Migrates data dialog. |
src/Aspire.Dashboard/Components/Dialogs/ManageDataDialog.razor.cs |
Updates data dialog logic. |
src/Aspire.Dashboard/Components/Dialogs/NotificationEntryComponent.razor |
Migrates notifications. |
src/Aspire.Dashboard/Components/Dialogs/NotificationEntryComponent.razor.cs |
Updates notification actions. |
src/Aspire.Dashboard/Components/Dialogs/NotificationsDialog.razor |
Migrates notification center. |
src/Aspire.Dashboard/Components/Dialogs/NotificationsDialog.razor.cs |
Updates notification state. |
src/Aspire.Dashboard/Components/Dialogs/SettingsDialog.razor |
Migrates settings dialog. |
src/Aspire.Dashboard/Components/Dialogs/SettingsDialog.razor.cs |
Updates settings dialog logic. |
src/Aspire.Dashboard/Components/Dialogs/TextVisualizerDialog.razor |
Migrates text dialog. |
src/Aspire.Dashboard/Components/Dialogs/TextVisualizerDialog.razor.cs |
Updates text dialog logic. |
src/Aspire.Dashboard/Components/Dialogs/TextVisualizerDialog.razor.css |
Styles text dialog. |
src/Aspire.Dashboard/Components/Interactions/InteractionsProvider.cs |
Updates dialog orchestration. |
src/Aspire.Dashboard/Components/Layout/AspirePageContentLayout.razor |
Migrates page layout. |
src/Aspire.Dashboard/Components/Layout/AspirePageContentLayout.razor.cs |
Updates responsive layout. |
src/Aspire.Dashboard/Components/Layout/AspirePageContentLayout.razor.css |
Styles page layout. |
src/Aspire.Dashboard/Components/Layout/DesktopToolbarDivider.razor |
Migrates toolbar divider. |
src/Aspire.Dashboard/Components/Layout/MainLayout.razor |
Migrates main layout. |
src/Aspire.Dashboard/Components/Layout/MainLayout.razor.cs |
Updates main layout logic. |
src/Aspire.Dashboard/Components/Layout/MainLayout.razor.css |
Styles main layout. |
src/Aspire.Dashboard/Components/Layout/MobileNavMenu.razor |
Migrates mobile navigation. |
src/Aspire.Dashboard/Components/Layout/NotificationsHeaderButton.razor |
Migrates notification button. |
src/Aspire.Dashboard/Components/Layout/ReconnectModal.razor |
Migrates reconnect modal. |
src/Aspire.Dashboard/Components/Layout/ToolbarPanel.razor |
Migrates toolbar overflow. |
src/Aspire.Dashboard/Components/Pages/ConsoleLogs.razor |
Migrates console page. |
src/Aspire.Dashboard/Components/Pages/ConsoleLogs.razor.cs |
Updates console interactions. |
src/Aspire.Dashboard/Components/Pages/Login.razor |
Migrates login controls. |
src/Aspire.Dashboard/Components/Pages/Login.razor.cs |
Updates login behavior. |
src/Aspire.Dashboard/Components/Pages/Metrics.razor |
Migrates metrics page. |
src/Aspire.Dashboard/Components/Pages/Metrics.razor.css |
Styles metrics page. |
src/Aspire.Dashboard/Components/Pages/Resources.razor |
Migrates resources page. |
src/Aspire.Dashboard/Components/Pages/Resources.razor.cs |
Updates resource interactions. |
src/Aspire.Dashboard/Components/Pages/Resources.razor.css |
Styles resources page. |
src/Aspire.Dashboard/Components/Pages/StructuredLogs.razor |
Migrates logs page. |
src/Aspire.Dashboard/Components/Pages/StructuredLogs.razor.cs |
Updates logs interactions. |
src/Aspire.Dashboard/Components/Pages/StructuredLogs.razor.css |
Styles logs page. |
src/Aspire.Dashboard/Components/Pages/TraceDetail.razor |
Migrates trace details. |
src/Aspire.Dashboard/Components/Pages/TraceDetail.razor.cs |
Updates trace behavior. |
src/Aspire.Dashboard/Components/Pages/TraceDetail.razor.css |
Styles trace details. |
src/Aspire.Dashboard/Components/Pages/Traces.razor |
Migrates traces page. |
src/Aspire.Dashboard/Components/Pages/Traces.razor.cs |
Updates traces interactions. |
src/Aspire.Dashboard/Components/Pages/Traces.razor.css |
Styles traces page. |
src/Aspire.Dashboard/Components/Resize/GridColumnManager.razor.cs |
Updates resize handling. |
src/Aspire.Dashboard/Components/ResourcesGridColumns/LogMessageColumnDisplay.razor |
Updates log column. |
src/Aspire.Dashboard/Components/ResourcesGridColumns/ResourceNameDisplay.razor |
Updates resource column. |
src/Aspire.Dashboard/Components/ResourcesGridColumns/UnreadLogErrorsBadge.razor |
Updates error badge. |
src/Aspire.Dashboard/Components/ResourcesGridColumns/UrlsColumnDisplay.razor |
Updates URL column. |
src/Aspire.Dashboard/Components/ResourcesGridColumns/UrlsColumnDisplay.razor.cs |
Updates URL actions. |
src/Aspire.Dashboard/Configuration/DashboardOptions.cs |
Adds generated binding support. |
src/Aspire.Dashboard/DashboardWebApplication.cs |
Configures AOT-safe Dashboard. |
src/Aspire.Dashboard/Extensions/ComponentExtensions.cs |
Updates component helpers. |
src/Aspire.Dashboard/Model/BrowserStorage/LocalBrowserStorage.cs |
Uses generated JSON metadata. |
src/Aspire.Dashboard/Model/DashboardCommandExecutor.cs |
Updates Fluent notifications. |
src/Aspire.Dashboard/Model/DashboardDialogParameters.cs |
Adapts dialog parameters. |
src/Aspire.Dashboard/Model/DashboardDialogService.cs |
Adapts Fluent dialogs. |
src/Aspire.Dashboard/Model/DashboardMessageBarService.cs |
Adds message-bar lifecycle. |
src/Aspire.Dashboard/Model/GenAI/GenAIMessages.cs |
Updates generated serialization. |
src/Aspire.Dashboard/Model/INotificationService.cs |
Updates notification intent. |
src/Aspire.Dashboard/Model/Interaction/InputViewModel.cs |
Updates input binding. |
src/Aspire.Dashboard/Model/Interaction/InteractionMessageBoxContent.cs |
Updates dialog content. |
src/Aspire.Dashboard/Model/MenuButtonItem.cs |
Updates menu model. |
src/Aspire.Dashboard/Model/ResourceStateViewModel.cs |
Updates Fluent colors. |
src/Aspire.Dashboard/Model/Serialization/ResourceJsonSerializerContext.cs |
Expands JSON metadata. |
src/Aspire.Dashboard/Model/TelemetryExportService.cs |
Uses generated export serialization. |
src/Aspire.Dashboard/Model/TelemetryImportService.cs |
Uses generated import serialization. |
src/Aspire.Dashboard/Model/ThemeManager.cs |
Updates theme integration. |
src/Aspire.Dashboard/Model/TraceLinkHelpers.cs |
Updates trace links. |
src/Aspire.Dashboard/Otlp/Http/OtlpHttpEndpointsBuilder.cs |
Uses generated endpoint metadata. |
src/Aspire.Dashboard/Otlp/Storage/TelemetryRepository.cs |
Updates telemetry serialization. |
src/Aspire.Dashboard/Program.cs |
Starts standalone Dashboard. |
src/Aspire.Dashboard/Serialization/DashboardJsonSerializerContext.cs |
Defines AOT JSON metadata. |
src/Aspire.Dashboard/ServiceClient/DashboardClient.cs |
Adds AOT-safe TLS binding. |
src/Aspire.Dashboard/Telemetry/DashboardTelemetryJsonSerializerContext.cs |
Defines telemetry metadata. |
src/Aspire.Dashboard/Telemetry/DashboardTelemetrySender.cs |
Uses generated telemetry JSON. |
src/Aspire.Dashboard/Telemetry/DashboardTelemetryService.cs |
Updates telemetry parsing. |
src/Aspire.Dashboard/Telemetry/VisualStudioTelemetryTypes.cs |
Updates serialized types. |
src/Aspire.Dashboard/Utils/DashboardUIHelpers.cs |
Updates Fluent UI helpers. |
src/Aspire.Dashboard/wwwroot/css/app.css |
Updates global styles. |
src/Aspire.Dashboard/wwwroot/css/layout.css |
Adds responsive layout styles. |
src/Aspire.Dashboard/wwwroot/css/markdown.css |
Updates markdown styles. |
src/Aspire.Dashboard/wwwroot/css/tokens.css |
Defines Fluent tokens. |
src/Aspire.Dashboard/wwwroot/js/README.md |
Documents vendored scripts. |
src/Aspire.Dashboard/wwwroot/js/app-resourcegraph.js |
Updates graph integration. |
src/Aspire.Dashboard/wwwroot/js/app-theme.js |
Updates theme integration. |
src/Aspire.Dashboard/wwwroot/js/app.js |
Updates Dashboard JS. |
src/Aspire.Dashboard/wwwroot/js/fluent-ui-blazor-v5-bootstrap.js |
Bootstraps Fluent v5. |
src/Aspire.Dashboard/wwwroot/js/imask-7.6.1.min.js |
Vendors IMask. |
src/Aspire.Hosting.Tasks/ResolveAspireCliBundle.cs |
Resolves native Dashboard. |
src/Aspire.Hosting/Dashboard/DashboardEventHandlers.cs |
Launches native Dashboard. |
src/Aspire.Hosting/Dcp/DcpOptions.cs |
Configures Dashboard and terminal paths. |
src/Aspire.Managed/Aspire.Managed.csproj |
Removes embedded Dashboard command. |
src/Aspire.Managed/Program.cs |
Updates managed dispatch. |
src/Shared/BundleDiscovery.cs |
Shares Dashboard discovery constants. |
src/Shared/IConfigurationExtensions.cs |
Adds generated binding helpers. |
src/Shared/Otlp/Serialization/OtlpJsonSerializerContext.cs |
Adds serializer option contexts. |
tests/Aspire.Cli.Tests/BundleServiceIntegrationTests.cs |
Tests Dashboard bundle extraction. |
tests/Aspire.Cli.Tests/Commands/DashboardRunCommandTests.cs |
Tests native launch. |
tests/Aspire.Cli.Tests/Layout/LayoutConfigurationTests.cs |
Tests Dashboard resolution. |
tests/Aspire.Cli.Tests/Layout/LayoutDiscoveryReparsePointTests.cs |
Tests bundle discovery. |
tests/Aspire.Cli.Tests/Layout/LayoutProcessRunnerTests.cs |
Updates layout tests. |
tests/Aspire.Cli.Tests/ProfileCaptureOptionsTests.cs |
Updates profile options. |
tests/Aspire.Cli.Tests/ProfileCaptureServiceTests.cs |
Tests native profiling. |
tests/Aspire.Cli.Tests/Projects/PrebuiltAppHostServerTests.cs |
Tests path propagation. |
tests/Aspire.Dashboard.Components.Tests/Aspire.Dashboard.Components.Tests.csproj |
Updates Fluent test dependencies. |
tests/Aspire.Dashboard.Components.Tests/Controls/AspireMenuButtonTests.cs |
Tests menu button behavior. |
tests/Aspire.Dashboard.Components.Tests/Controls/AspireMenuTests.cs |
Tests menu lifecycle. |
tests/Aspire.Dashboard.Components.Tests/Controls/GenAIVisualizerDialogTests.cs |
Updates GenAI dialog tests. |
tests/Aspire.Dashboard.Components.Tests/Controls/ResourceDetailsTests.cs |
Updates details tests. |
tests/Aspire.Dashboard.Components.Tests/Controls/ResourceSelectTests.cs |
Updates selector tests. |
tests/Aspire.Dashboard.Components.Tests/Controls/StructuredLogDetailsTests.cs |
Updates log details tests. |
tests/Aspire.Dashboard.Components.Tests/Controls/TextVisualizerDialogTests.cs |
Updates text dialog tests. |
tests/Aspire.Dashboard.Components.Tests/Controls/UrlsColumnDisplayTests.cs |
Updates URL tests. |
tests/Aspire.Dashboard.Components.Tests/DashboardMessageBarServiceTests.cs |
Tests message-bar lifecycle. |
tests/Aspire.Dashboard.Components.Tests/Dialogs/FilterDialogTests.cs |
Updates filter tests. |
tests/Aspire.Dashboard.Components.Tests/Dialogs/InteractionsInputDialogTests.cs |
Updates input dialog tests. |
tests/Aspire.Dashboard.Components.Tests/Dialogs/ManageDataDialogTests.cs |
Updates data dialog tests. |
tests/Aspire.Dashboard.Components.Tests/Interactions/InteractionsProviderTests.cs |
Updates interaction tests. |
tests/Aspire.Dashboard.Components.Tests/Layout/MainLayoutTests.cs |
Updates layout tests. |
tests/Aspire.Dashboard.Components.Tests/Layout/MobileNavMenuTests.cs |
Updates mobile navigation tests. |
tests/Aspire.Dashboard.Components.Tests/Model/DashboardDialogServiceTests.cs |
Tests dialog adapter. |
tests/Aspire.Dashboard.Components.Tests/Pages/ConsoleLogsTerminalTests.cs |
Updates terminal tests. |
tests/Aspire.Dashboard.Components.Tests/Pages/ConsoleLogsTests.cs |
Updates console tests. |
tests/Aspire.Dashboard.Components.Tests/Pages/LoginTests.cs |
Updates login tests. |
tests/Aspire.Dashboard.Components.Tests/Pages/MetricsTests.cs |
Updates metrics tests. |
tests/Aspire.Dashboard.Components.Tests/Pages/ResourcesTests.cs |
Updates resources tests. |
tests/Aspire.Dashboard.Components.Tests/Pages/StructuredLogsTests.cs |
Updates logs tests. |
tests/Aspire.Dashboard.Components.Tests/Pages/TraceDetailsTests.cs |
Updates trace detail tests. |
tests/Aspire.Dashboard.Components.Tests/Shared/DashboardComponentActivatorTests.cs |
Tests custom activation. |
tests/Aspire.Dashboard.Components.Tests/Shared/DashboardPageTestContext.cs |
Updates test context. |
tests/Aspire.Dashboard.Components.Tests/Shared/FluentUISetupHelpers.cs |
Mocks Fluent v5 JS. |
tests/Aspire.Dashboard.Components.Tests/Shared/TestMessageService.cs |
Updates message fake. |
tests/Aspire.Dashboard.Tests/Aspire.Dashboard.Tests.csproj |
Targets .NET 11. |
tests/Aspire.Dashboard.Tests/BlazorAssetsTests.cs |
Tests static assets. |
tests/Aspire.Dashboard.Tests/DashboardJsonSerializerContextTests.cs |
Tests generated metadata. |
tests/Aspire.Dashboard.Tests/Integration/FrontendBrowserTokenAuthTests.cs |
Updates auth tests. |
tests/Aspire.Dashboard.Tests/Integration/Playwright/AccessibilityTests.cs |
Updates accessibility tests. |
tests/Aspire.Dashboard.Tests/Integration/Playwright/AppBarTests.cs |
Updates app-bar tests. |
tests/Aspire.Dashboard.Tests/Integration/Playwright/AspireMenuButtonFocusTests.cs |
Tests menu focus. |
tests/Aspire.Dashboard.Tests/Integration/Playwright/AspireMenuLayoutTests.cs |
Tests menu layout. |
tests/Aspire.Dashboard.Tests/Integration/Playwright/DashboardInteractionsTests.cs |
Tests Dashboard interactions. |
tests/Aspire.Dashboard.Tests/Integration/Playwright/DesktopNavMenuTests.cs |
Updates desktop navigation tests. |
tests/Aspire.Dashboard.Tests/Integration/Playwright/NativeAotDashboardTests.cs |
Tests native interactivity. |
tests/Aspire.Dashboard.Tests/Integration/Playwright/ResourceSelectInteractionTests.cs |
Tests selector interactions. |
tests/Aspire.Dashboard.Tests/Integration/Playwright/ResourcesTests.cs |
Updates resource UI tests. |
tests/Aspire.Dashboard.Tests/Integration/Playwright/StructuredLogsLayoutTests.cs |
Tests logs layout. |
tests/Aspire.Dashboard.Tests/Integration/Playwright/TracesLayoutTests.cs |
Tests traces layout. |
tests/Aspire.Dashboard.Tests/Integration/ResponseCompressionTests.cs |
Updates asset compression tests. |
tests/Aspire.Dashboard.Tests/Integration/StartupTests.cs |
Updates startup tests. |
tests/Aspire.Dashboard.Tests/Integration/TelemetryApiTests.cs |
Updates telemetry API tests. |
tests/Aspire.Dashboard.Tests/Model/DashboardCommandExecutorTests.cs |
Updates notification tests. |
tests/Aspire.Dashboard.Tests/Model/InputViewModelTests.cs |
Updates input tests. |
tests/Aspire.Dashboard.Tests/Model/ResourceStateViewModelTests.cs |
Updates color expectations. |
tests/Aspire.Dashboard.Tests/SecurityOptionsBindingTests.cs |
Tests AOT option binding. |
tests/Aspire.Dashboard.Tests/Telemetry/DashboardTelemetryServiceTests.cs |
Updates telemetry tests. |
tests/Aspire.Dashboard.Tests/TelemetryApiServiceTests.cs |
Tests Unicode streaming. |
tests/Aspire.Hosting.Sdk.Tests.FakeCommand/Program.cs |
Creates fake Dashboard bundle. |
tests/Aspire.Hosting.Sdk.Tests/AppHostSdkTargetsTests.cs |
Tests SDK Dashboard metadata. |
tests/Aspire.Hosting.Tests/Dashboard/DashboardEventHandlersTests.cs |
Tests native launch behavior. |
tests/Aspire.Hosting.Tests/Dashboard/DashboardResourceTests.cs |
Updates Dashboard resource tests. |
tests/Aspire.Hosting.Tests/MSBuildTests.cs |
Updates bundle MSBuild tests. |
tests/Infrastructure.Tests/PowerShellScripts/DownloadNativeArchivesTests.cs |
Tests artifact downloads. |
tests/Infrastructure.Tests/TestTriggerMap/SelectTestsWorkflowTests.cs |
Tests CI selection changes. |
tests/Shared/Telemetry/TelemetryTestHelpers.cs |
Uses modern certificate loader. |
tests/Shared/TestCertificateLoader.cs |
Uses modern certificate loader. |
tests/Shared/TestDialogService.cs |
Updates dialog fake. |
tools/CreateLayout/Program.cs |
Assembles native Dashboard bundle. |
tools/CreateLayout/README.md |
Documents bundle layout. |
4fc87fa to
3d4299e
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 287 out of 289 changed files in this pull request and generated 4 comments.
Suppressed comments (1)
src/Aspire.Dashboard/Components/Pages/Login.razor:49
Appearanceis a Fluent component parameter, but this is now a native HTML anchor, so Razor emits an inertappearance="ButtonAppearance.Subtle"attribute. The existing stylesheet also still targetsfluent-anchor, which means this link loses the intended subtle Fluent styling and sizing. Please give the native anchor an explicit class and update the scoped CSS, or use the supported v5 Fluent link component.
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 287 out of 289 changed files in this pull request and generated 1 comment.
Suppressed comments (3)
Previously missed (1) — in code that hasn't changed since the last review.
src/Aspire.Cli/Projects/PrebuiltAppHostServer.cs:1499
ASPIRE_DASHBOARD_PATHis an override, but this unconditionally replaces an inherited value with the bundle path. A prebuilt AppHost launched with a custom Dashboard therefore ignores that override, unlike the terminal-host handling immediately below and the regularDotNetAppHostProjectpath. Guard this default withHasEnvironmentOverride.
var dashboardPath = _layout.GetDashboardPath();
if (dashboardPath is not null)
{
startInfo.Environment[BundleDiscovery.DashboardPathEnvVar] = dashboardPath;
}
src/Aspire.Dashboard/Components/Controls/UserProfile.razor:8
- The replacement
<details>menu has no matching styles.UserProfile.razor.cssstill targets.fluent-profile-menu,fluent-anchored-region, and.fluent-persona, so opening this control now renders browser-default disclosure content in normal header flow instead of an anchored profile popover. Update the markup and isolated CSS together to preserve the profile menu layout.
src/Aspire.Dashboard/Components/Pages/Login.razor:49 Appearanceis a Fluent component parameter and has no effect on a native<a>element. The existing.token-help-container fluent-anchorCSS selector also no longer matches, so this action loses its intended Fluent styling. Use a supported Fluent v5 anchor or add an explicit class and corresponding anchor styles.
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
7a6d65a to
f4713d5
Compare
This comment has been minimized.
This comment has been minimized.
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
|
Retrying the failed CI jobs for this pull request from the CI run attempt. The rerun is being tracked in the rerun attempt. |
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
🟡 Changes recommended
Native AOT is enabled while direct reflection-based JsonSerializer.Deserialize<T> paths remain in DashboardRunStore, which can fail when reading run metadata.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review details
- Files reviewed: 155/158 changed files
- Comments generated: 0 new
- Review effort level: Balanced
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
🔵 Needs a closer look
Legacy profiling launch and Native AOT browser-storage serialization have concrete runtime failures.
Review details
Suppressed comments (2)
Previously missed (2) — in code that hasn't changed since the last review.
src/Aspire.Cli/Profiling/ProfileCaptureService.cs:89
ASPIRE_DASHBOARD_PATHstill accepts a legacyaspire-managedexecutable, but this argument list no longer supplies its requireddashboardsubcommand. Profiling with a legacy bundle will invokeaspire-managed --...and fail command parsing. PrependdashboardwhenBundleDiscovery.IsAspireManagedBinary(dashboardPath)is true, matchingDashboardEventHandlers.
var dashboardArgs = new List<string>
{
$"--{KnownAspNetCoreConfigNames.Urls}={options.DashboardUrl}",
$"--{KnownConfigNames.DashboardOtlpGrpcEndpointUrl}={options.OtlpGrpcUrl}",
$"--{KnownConfigNames.DashboardOtlpHttpEndpointUrl}={options.OtlpHttpUrl}",
$"--{KnownConfigNames.DashboardUnsecuredAllowAnonymous}=true",
$"--{KnownConfigNames.DashboardApiEnabled}=true"
src/Aspire.Dashboard/Serialization/DashboardJsonSerializerContext.cs:37
LocalBrowserStoragenow requires generated metadata for every storedTValue, butSummaryDetailsView.SaveSizeToStoragepassesMath.Round(float, 3), whose inferred type isdouble. In Native AOT, resizing a remembered splitter will fail atGetTypeInfo(typeof(double))instead of persisting its size. Registerdoublemetadata (or keep the stored value typed asfloat).
- Files reviewed: 157/160 changed files
- Comments generated: 0 new
- Review effort level: Balanced
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
b35f3ca to
72e8183
Compare
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
🟡 Changes recommended
Removing the 10,000-item virtualization overrides restores the 100-item default and can make content inaccessible in large Dashboard views.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review details
- Files reviewed: 146/149 changed files
- Comments generated: 7
- Review effort level: Balanced
Tests selectorSelects the full PR test matrix + all PR-gated jobs (ALL) — a rule matching '.github/actions/select-tests/action.yml' selects ALL Advisory workflow impact (4)
Selection computed for commit |
There was a problem hiding this comment.
🔵 Needs a closer look
Profiling no longer honors the documented legacy ASPIRE_MANAGED_PATH override or its required dashboard dispatch argument.
Review details
Suppressed comments (1)
Previously missed (1) — in code that hasn't changed since the last review.
src/Aspire.Cli/Profiling/ProfileCaptureService.cs:173
- This drops the documented
ASPIRE_MANAGED_PATHoverride from the self-profile collector path. Existing profiling setups that point this variable at a legacy/customaspire-managedbinary now ignore the override and fall back to bundle/repo discovery; if support is restored,dashboardArgsmust also prepend the legacydashboarddispatch argument when that binary is selected. Preserve the compatibility path (the repository still documents this override indocs/specs/bundle.md:1016).
- Files reviewed: 146/149 changed files
- Comments generated: 0 new
- Review effort level: Balanced
Description
Migrates the Aspire Dashboard to Fluent UI Blazor v5 and enables it to publish and run as a Native AOT executable on .NET 11. This keeps the Dashboard on the current Fluent component model while allowing Aspire distributions to carry a platform-native Dashboard instead of launching the framework-dependent
aspire-managedDashboard command.The Dashboard is packaged as a dedicated cross-platform bundle component with its static assets, discovered by the CLI and hosting layers, and launched directly. Build, signing, archive download, profiling, and CI paths are updated for the supported runtime identifiers, with fallback support for legacy bundles.
The runtime changes replace reflection-dependent configuration, serialization, and component activation paths with Native AOT-compatible implementations. The Fluent UI migration updates dialogs, notifications, menus, grids, tabs, trees, selectors, inputs, splitters, test infrastructure, and responsive Dashboard layouts. Fluent UI Core is pinned to the latest documented daily build,
5.0.0-preview.26232.1, while Icons remains on its newest available v5 build.User-facing usage
Existing workflows such as
aspire dashboard runand AppHost startup automatically resolve and launch the bundled native Dashboard executable. No new command-line options are required. Dashboard users retain the existing Resources, Console Logs, Structured Logs, Traces, and Metrics workflows on the Fluent UI v5 component model.Screenshots / Recordings
Validation
Aspire.Dashboardusing the documented Fluent UI daily feed.Aspire.Dashboard.Components.Tests: 224 passed, 0 failed, 0 skipped.win-x64executable.eng/scripts/test-native-dashboard.ps1successfully against the published executable.Fixes # (issue)
Checklist
<remarks />and<code />elements on your triple slash comments?