Skip to content

Retire BFF v2 on November 10, 2026 - #413

Draft
maartenba wants to merge 9 commits into
mainfrom
mb/retire-bff-v2
Draft

maartenba wants to merge 9 commits into
mainfrom
mb/retire-bff-v2

Conversation

@maartenba

Copy link
Copy Markdown
Member

No description provided.

- Retarget net8.0/net9.0 projects to net10.0
- Bump Microsoft.AspNetCore.* and Microsoft.Extensions.* packages to 10.0.x
- Bump Serilog.AspNetCore to 10.0.0 and Swashbuckle to 10.2.3
- Align Duende.IdentityServer (7.4.13), Duende.IdentityModel (8.1.0) and Duende.BFF.Yarp (3.1.1)
- Migrate ContainerizedIdentityServer to the Duende.IdentityModel namespace and System.Buffers.Text.Base64Url
- Update Dockerfiles, VS Code launch configs and READMEs to net10.0
- Retarget to net10.0 with Microsoft.AspNetCore.OpenApi 10.0.11
- Migrate to Microsoft.OpenApi 2.x (Readers package merged into core); port
  document combiner and parser from the BFF v4 sample
- Move the parser to System.CommandLine 2.0.11
- Move the AppHost from Aspire 9.0.0 to Aspire.AppHost.Sdk 13.4.5
- Regenerate OpenApi.Api1/Api2 documents (OpenAPI 3.1)
Downstream APIs defining components with the same name (e.g. WeatherForecast)
overwrote each other in the combined document, so operations referenced the
wrong schema. Prefix each downstream document's component keys with a name
derived from its local path and rewrite its $refs accordingly.
Superseded by the existing .NET 10 MAUI sample.
@maartenba maartenba added this to the 2026-Q4 milestone Nov 2, 2026
@maartenba maartenba self-assigned this Nov 2, 2026
Copilot AI balanced review requested due to automatic review settings November 2, 2026 16:06

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The System.CommandLine upgrade leaves invalid option names and synchronous invocation of an asynchronous action, causing runtime failures that prevent the offline document transformer from running.

2 open issues
What changed in this PR

Retires the BFF v2 samples for the planned November 10, 2026 retirement, removes the .NET 9 MAUI sample, and migrates retained samples and build tooling to .NET 10.

Changes:

  • Removes legacy applications, configuration, UI, and assets.
  • Updates frameworks, dependencies, Docker images, and debugger paths.
  • Adapts OpenAPI, IdentityModel, and build-tool API usage.

This pull request requires changes.

Two critical issues remain in the dependency migration at BFF/v3/OpenApi/OpenApi.BffOpenApiDocumentParser/OpenApi.BffOpenApiDocumentParser.csproj:10:

  • The four Option<string> constructors in Program.cs use descriptions as option names. Stable System.CommandLine rejects their whitespace, preventing startup even for --help. Use identifiers such as --input-file, preserve short aliases, and move explanatory text to Description.
  • parseResult.Invoke() cannot execute the asynchronous action registered with SetAction under stable System.CommandLine 2.x. Change the entry point to async Task<int> Main and return await parseResult.InvokeAsync().
File Description
various/​JwtSecuredAzureFunction/​Client/​Client.csproj Targets .NET 10.
various/​clients/​Maui/​net9/​MauiApp1/​Resources/​Raw/​AboutAssets.txt Removes asset guidance.
various/​clients/​Maui/​net9/​MauiApp1/​Resources/​AppIcon/​appicon.svg Removes application icon.
various/​clients/​Maui/​net9/​MauiApp1/​Properties/​launchSettings.json Removes launch configuration.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​Windows/​App.xaml.cs Removes Windows startup code.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​Windows/​App.xaml Removes Windows application markup.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​Windows/​app.manifest Removes Windows manifest.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​Tizen/​tizen-manifest.xml Removes Tizen manifest.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​Tizen/​Main.cs Removes Tizen entry point.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​MacCatalyst/​Program.cs Removes Mac Catalyst entry point.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​MacCatalyst/​Entitlements.plist Removes Mac Catalyst entitlements.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​MacCatalyst/​AppDelegate.cs Removes Mac Catalyst delegate.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​iOS/​Program.cs Removes iOS entry point.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​iOS/​AppDelegate.cs Removes iOS delegate.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​Android/​WebAuthenticationCallbackActivity.cs Removes Android authentication callback.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​Android/​Resources/​values/​colors.xml Removes Android colors.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​Android/​MainApplication.cs Removes Android application class.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​Android/​MainActivity.cs Removes Android launcher activity.
various/​clients/​Maui/​net9/​MauiApp1/​Platforms/​Android/​AndroidManifest.xml Removes Android manifest.
various/​clients/​Maui/​net9/​MauiApp1/​MauiProgram.cs Removes application and OIDC setup.
various/​clients/​Maui/​net9/​MauiApp1/​MauiAuthenticationBrowser.cs Removes authentication browser adapter.
various/​clients/​Maui/​net9/​MauiApp1/​MainPage.xaml Removes main-page markup.
various/​clients/​Maui/​net9/​MauiApp1/​AppShell.xaml.cs Removes shell initialization.
various/​clients/​Maui/​net9/​MauiApp1/​AppShell.xaml Removes shell markup.
various/​clients/​Maui/​net9/​MauiApp1/​App.xaml.cs Removes application initialization.
various/​clients/​Maui/​net9/​MauiApp1/​App.xaml Removes application resources.
various/​clients/​Maui/​net9/​MauiApp1.slnx Removes legacy MAUI solution.
build/​Program.cs Uses asynchronous Bullseye execution.
build/​build.csproj Updates framework and build dependencies.
BFF/​v3/​Vue/​Vue.Bff/​Vue.Bff.csproj Updates framework and ASP.NET dependencies.
BFF/​v3/​Vue/​Vue.Api/​Vue.Api.csproj Updates framework and API dependencies.
BFF/​v3/​TokenExchange/​TokenExchange.IdentityServer/​TokenExchange.IdentityServer.csproj Updates framework and Serilog.
BFF/​v3/​TokenExchange/​TokenExchange.Bff/​TokenExchange.Bff.csproj Updates framework and BFF dependencies.
BFF/​v3/​TokenExchange/​TokenExchange.Api/​TokenExchange.Api.csproj Updates framework and API dependencies.
BFF/​v3/​TokenExchange/​README.md Updates documented v3 versions.
BFF/​v3/​TokenExchange/​.vscode/​launch.json Updates debugger output paths.
BFF/​v3/​SplitHosts/​README.md Updates documented v3 versions.
BFF/​v3/​SplitHosts/​FrontendHost/​FrontendHost.csproj Targets .NET 10.
BFF/​v3/​SplitHosts/​BackendHost/​BackendHost.csproj Updates framework and OIDC package.
BFF/​v3/​SplitHosts/​BackendApiHost/​BackendApiHost.csproj Updates framework and JWT package.
BFF/​v3/​SplitHosts/​.vscode/​launch.json Updates debugger output paths.
BFF/​v3/​React/​React.Bff/​React.Bff.csproj Updates framework and OIDC package.
BFF/​v3/​React/​React.Api/​React.Api.csproj Updates framework and JWT package.
BFF/​v3/​React/​.vscode/​launch.json Updates debugger output paths.
BFF/​v3/​Quickstarts/​BlazorBffApp/​BlazorBffApp/​BlazorBffApp.csproj Updates Blazor server framework and package.
BFF/​v3/​Quickstarts/​BlazorBffApp/​BlazorBffApp.Client/​BlazorBffApp.Client.csproj Updates Blazor client framework and package.
BFF/​v3/​OpenApi/​OpenApi.DevServer.ServiceDefaults/​Extensions.cs Adapts OpenAPI namespaces and interfaces.
BFF/​v3/​OpenApi/​OpenApi.DevServer.AppHost/​OpenApi.DevServer.AppHost.csproj Updates framework and Aspire SDK declaration.
BFF/​v3/​OpenApi/​OpenApi.BffOpenApiDocumentParser/​OpenApi.BffOpenApiDocumentParser.csproj Updates framework and parser dependencies; migration has two critical blockers.
BFF/​v3/​OpenApi/​OpenApi.Bff/​Program.cs Removes obsolete OpenAPI imports.
BFF/​v3/​OpenApi/​OpenApi.Bff/​OpenApiResponseTransform.cs Removes obsolete OpenAPI import.
BFF/​v3/​OpenApi/​OpenApi.Bff/​OpenApi.Bff.csproj Updates framework and OpenAPI dependencies.
BFF/​v3/​OpenApi/​OpenApi.Api2/​OpenApi.Api2.json Updates generated OpenAPI schema.
BFF/​v3/​OpenApi/​OpenApi.Api2/​OpenApi.Api2.csproj Updates framework and document-generation package.
BFF/​v3/​OpenApi/​OpenApi.Api1/​OpenApi.Api1.json Updates generated OpenAPI schema.
BFF/​v3/​OpenApi/​OpenApi.Api1/​OpenApi.Api1.csproj Updates framework and OpenAPI packages.
BFF/​v3/​JsBffYarpSample/​FrontendHost/​FrontendHost.csproj Updates framework and OIDC package.
BFF/​v3/​JsBffYarpSample/​BackendApiHost/​BackendApiHost.csproj Updates framework and JWT package.
BFF/​v3/​JsBffYarpSample/​.vscode/​launch.json Updates debugger output paths.
BFF/​v3/​JsBffSample/​FrontendHost/​FrontendHost.csproj Updates framework and OIDC package.
BFF/​v3/​JsBffSample/​BackendApiHost/​BackendApiHost.csproj Updates framework and JWT package.
BFF/​v3/​JsBffSample/​.vscode/​launch.json Updates debugger output paths.
BFF/​v3/​DPoP/​DPoP.Bff/​DPoP.Bff.csproj Updates framework and BFF dependencies.
BFF/​v3/​DPoP/​DPoP.Api/​DPoP.Api.csproj Updates framework and API dependencies.
BFF/​v3/​DPoP/​.vscode/​launch.json Updates debugger output paths.
BFF/​v3/​docker/​FrontendHost/​FrontendHost.csproj Updates framework and OIDC package.
BFF/​v3/​docker/​FrontendHost/​Dockerfile Uses .NET 10 container images.
BFF/​v3/​docker/​ContainerizedIdentityServer/​Pages/​TestUsers.cs Uses Duende.IdentityModel namespace.
BFF/​v3/​docker/​ContainerizedIdentityServer/​Pages/​ExternalLogin/​Callback.cshtml.cs Uses Duende.IdentityModel namespace.
BFF/​v3/​docker/​ContainerizedIdentityServer/​Pages/​Diagnostics/​ViewModel.cs Updates Base64URL decoding API.
BFF/​v3/​docker/​ContainerizedIdentityServer/​Pages/​Consent/​Index.cshtml.cs Uses Duende.IdentityModel namespace.
BFF/​v3/​docker/​ContainerizedIdentityServer/​Pages/​Account/​Logout/​Index.cshtml.cs Uses Duende.IdentityModel namespace.
BFF/​v3/​docker/​ContainerizedIdentityServer/​Dockerfile Uses .NET 10 container images.
BFF/​v3/​docker/​ContainerizedIdentityServer/​ContainerizedIdentityServer.csproj Updates framework and server dependencies.
BFF/​v3/​BlazorWasm/​Shared/​BlazorWasm.Shared.csproj Targets .NET 10.
BFF/​v3/​BlazorWasm/​Server/​BlazorWasm.Server.csproj Updates framework and server packages.
BFF/​v3/​BlazorWasm/​Client/​BlazorWasm.Client.csproj Updates framework and WebAssembly packages.
BFF/​v3/​BlazorAutoRendering/​BlazorAutoRendering/​BlazorAutoRendering.csproj Updates framework and server packages.
BFF/​v3/​BlazorAutoRendering/​BlazorAutoRendering.Client/​BlazorAutoRendering.Client.csproj Updates framework and WebAssembly package.
BFF/​v3/​BlazorAutoRendering/​BlazorAutoRendering.Api/​BlazorAutoRendering.Api.csproj Updates framework and API dependencies.
BFF/​v3/​Angular/​Angular.Bff/​Angular.Bff.csproj Updates framework and BFF package.
BFF/​v3/​Angular/​Angular.Api/​Angular.Api.csproj Updates framework and JWT package.
BFF/​v2/​TokenExchange/​TokenExchange.slnx Removes retired solution.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​wwwroot/​lib/​bootstrap/​LICENSE Removes bundled license file.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​wwwroot/​js/​signout-redirect.js Removes logout redirect script.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​wwwroot/​js/​signin-redirect.js Removes login redirect script.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​wwwroot/​duende-logo.svg Removes logo asset.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​wwwroot/​css/​site.scss Removes stylesheet source.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​wwwroot/​css/​site.min.css Removes minified stylesheet.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​wwwroot/​css/​site.css Removes stylesheet.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​TokenExchange.IdentityServer.csproj Removes retired server project.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Program.cs Removes server startup code.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Shared/​_ValidationSummary.cshtml Removes validation partial.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Shared/​_Nav.cshtml Removes navigation partial.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Shared/​_Layout.cshtml Removes page layout.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Redirect/​Index.cshtml.cs Removes redirect handler.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Redirect/​Index.cshtml Removes redirect page.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Index.cshtml.cs Removes home-page handler.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Index.cshtml Removes home page.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Home/​Error/​ViewModel.cs Removes error view model.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Home/​Error/​Index.cshtml.cs Removes error handler.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Home/​Error/​Index.cshtml Removes error page.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Grants/​ViewModel.cs Removes grant view models.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​ExternalLogin/​Challenge.cshtml Removes external challenge page.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​ExternalLogin/​Callback.cshtml Removes external callback page.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Extensions.cs Removes page helper methods.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Diagnostics/​ViewModel.cs Removes diagnostics view model.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Diagnostics/​Index.cshtml.cs Removes diagnostics handler.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Device/​ViewModel.cs Removes device view models.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Device/​Success.cshtml.cs Removes device-success handler.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Device/​Success.cshtml Removes device-success page.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Device/​InputModel.cs Removes device input model.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Device/​DeviceOptions.cs Removes device-flow options.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Device/​_ScopeListItem.cshtml Removes device-scope partial.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Consent/​ViewModel.cs Removes consent view models.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Consent/​InputModel.cs Removes consent input model.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Consent/​ConsentOptions.cs Removes consent options.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Consent/​_ScopeListItem.cshtml Removes consent-scope partial.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Ciba/​ViewModel.cs Removes CIBA view models.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Ciba/​InputModel.cs Removes CIBA input model.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Ciba/​Index.cshtml.cs Removes CIBA request handler.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Ciba/​Index.cshtml Removes CIBA request page.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Ciba/​ConsentOptions.cs Removes CIBA consent options.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Ciba/​All.cshtml.cs Removes pending-request handler.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Ciba/​All.cshtml Removes pending-request page.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Ciba/​_ScopeListItem.cshtml Removes CIBA scope partial.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Account/​Logout/​LogoutOptions.cs Removes logout options.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Account/​Logout/​LoggedOutViewModel.cs Removes logout view model.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Account/​Logout/​LoggedOut.cshtml.cs Removes logged-out handler.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Account/​Logout/​LoggedOut.cshtml Removes logged-out page.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Account/​Logout/​Index.cshtml Removes logout confirmation page.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Account/​Login/​ViewModel.cs Removes login view model.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Account/​Login/​LoginOptions.cs Removes login options.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​Account/​Login/​InputModel.cs Removes login input model.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​_ViewStart.cshtml Removes shared layout selection.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Pages/​_ViewImports.cshtml Removes shared Razor imports.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Extensions.cs Removes server configuration helpers.
BFF/​v2/​TokenExchange/​TokenExchange.IdentityServer/​Config.cs Removes identity-resource and client configuration.
BFF/​v2/​TokenExchange/​TokenExchange.Bff/​wwwroot/​StyleSheet.css Removes BFF stylesheet.
BFF/​v2/​TokenExchange/​TokenExchange.Bff/​TokenExchange.Bff.csproj Removes retired BFF project.
BFF/​v2/​TokenExchange/​TokenExchange.Bff/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​TokenExchange/​TokenExchange.Bff/​LocalApiController.cs Removes local API controller.
BFF/​v2/​TokenExchange/​TokenExchange.Api/​TokenExchange.Api.csproj Removes retired API project.
BFF/​v2/​TokenExchange/​TokenExchange.Api/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​TokenExchange/​TokenExchange.Api/​EchoController.cs Removes echo controller.
BFF/​v2/​SplitHosts/​SplitHosts.slnx Removes retired solution.
BFF/​v2/​SplitHosts/​FrontendHost/​wwwroot/​StyleSheet.css Removes frontend stylesheet.
BFF/​v2/​SplitHosts/​FrontendHost/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​SplitHosts/​FrontendHost/​Program.cs Removes frontend startup code.
BFF/​v2/​SplitHosts/​FrontendHost/​FrontendHost.csproj Removes frontend project.
BFF/​v2/​SplitHosts/​BackendHost/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​SplitHosts/​BackendHost/​FrontendHostReturnUrlValidator.cs Removes return-URL validator.
BFF/​v2/​SplitHosts/​BackendHost/​BackendHost.csproj Removes backend project.
BFF/​v2/​SplitHosts/​BackendHost/​appsettings.json Removes backend settings.
BFF/​v2/​SplitHosts/​BackendHost/​appsettings.Development.json Removes development settings.
BFF/​v2/​SplitHosts/​BackendApiHost/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​SplitHosts/​BackendApiHost/​Program.cs Removes API startup code.
BFF/​v2/​SplitHosts/​BackendApiHost/​BackendApiHost.csproj Removes API project.
BFF/​v2/​React/​React.slnx Removes retired solution.
BFF/​v2/​React/​react.client/​src/​main.jsx Removes React entry point.
BFF/​v2/​React/​react.client/​src/​index.css Removes stylesheet file.
BFF/​v2/​React/​react.client/​src/​components/​NavMenu.css Removes navigation styles.
BFF/​v2/​React/​react.client/​src/​components/​Layout.jsx Removes layout component.
BFF/​v2/​React/​react.client/​src/​App.jsx Removes application routing.
BFF/​v2/​React/​react.client/​src/​App.css Removes application styles.
BFF/​v2/​React/​react.client/​README.md Removes client template documentation.
BFF/​v2/​React/​react.client/​react.client.esproj Removes JavaScript project.
BFF/​v2/​React/​react.client/​package.json Removes client dependency manifest.
BFF/​v2/​React/​react.client/​nuget.config Removes NuGet configuration.
BFF/​v2/​React/​react.client/​index.html Removes client HTML entry point.
BFF/​v2/​React/​react.client/​.vscode/​launch.json Removes browser launch configuration.
BFF/​v2/​React/​react.client/​.gitignore Removes client ignore rules.
BFF/​v2/​React/​react.client/​.eslintrc.cjs Removes ESLint configuration.
BFF/​v2/​React/​React.Bff/​React.Bff.csproj Removes retired BFF project.
BFF/​v2/​React/​React.Bff/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​React/​React.Bff/​appsettings.json Removes BFF settings.
BFF/​v2/​React/​React.Bff/​appsettings.Development.json Removes development settings.
BFF/​v2/​React/​React.Api/​React.Api.csproj Removes retired API project.
BFF/​v2/​React/​React.Api/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​React/​React.Api/​Program.cs Removes API startup code.
BFF/​v2/​React/​React.Api/​appsettings.json Removes API settings.
BFF/​v2/​React/​React.Api/​appsettings.Development.json Removes development settings.
BFF/​v2/​React/​.vscode/​tasks.json Removes build tasks.
BFF/​v2/​React/​.vscode/​launch.json Removes debugger configurations.
BFF/​v2/​JsBffYarpSample/​JsBffYarpSample.slnx Removes retired solution.
BFF/​v2/​JsBffYarpSample/​FrontendHost/​YarpConfigurator.cs Removes proxy configuration.
BFF/​v2/​JsBffYarpSample/​FrontendHost/​wwwroot/​StyleSheet.css Removes frontend styles.
BFF/​v2/​JsBffYarpSample/​FrontendHost/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​JsBffYarpSample/​FrontendHost/​FrontendHost.csproj Removes frontend project.
BFF/​v2/​JsBffYarpSample/​BackendApiHost/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​JsBffYarpSample/​BackendApiHost/​Program.cs Removes API startup code.
BFF/​v2/​JsBffYarpSample/​BackendApiHost/​BackendApiHost.csproj Removes API project.
BFF/​v2/​JsBffYarpSample/​.vscode/​tasks.json Removes build tasks.
BFF/​v2/​JsBffYarpSample/​.vscode/​launch.json Removes debugger configurations.
BFF/​v2/​JsBffSample/​JsBffSample.slnx Removes retired solution.
BFF/​v2/​JsBffSample/​FrontendHost/​wwwroot/​StyleSheet.css Removes frontend styles.
BFF/​v2/​JsBffSample/​FrontendHost/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​JsBffSample/​FrontendHost/​FrontendHost.csproj Removes frontend project.
BFF/​v2/​JsBffSample/​BackendApiHost/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​JsBffSample/​BackendApiHost/​Program.cs Removes API startup code.
BFF/​v2/​JsBffSample/​BackendApiHost/​BackendApiHost.csproj Removes API project.
BFF/​v2/​JsBffSample/​.vscode/​tasks.json Removes build tasks.
BFF/​v2/​JsBffSample/​.vscode/​launch.json Removes debugger configurations.
BFF/​v2/​DPoP/​DPoP.slnx Removes retired solution.
BFF/​v2/​DPoP/​DPoP.Bff/​wwwroot/​StyleSheet.css Removes BFF styles.
BFF/​v2/​DPoP/​DPoP.Bff/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​DPoP/​DPoP.Bff/​LocalApiController.cs Removes local API controller.
BFF/​v2/​DPoP/​DPoP.Bff/​DPoP.Bff.csproj Removes BFF project.
BFF/​v2/​DPoP/​DPoP.Api/​Properties/​launchSettings.json Removes launch configuration.
BFF/​v2/​DPoP/​DPoP.Api/​EchoController.cs Removes echo controller.
BFF/​v2/​DPoP/​DPoP.Api/​DPoP/​IReplayCache.cs Removes replay-cache interface.
BFF/​v2/​DPoP/​DPoP.Api/​DPoP/​DPoPServiceCollectionExtensions.cs Removes DPoP service registration.
BFF/​v2/​DPoP/​DPoP.Api/​DPoP/​DPoPProofValidatonContext.cs Removes proof-validation context.
BFF/​v2/​DPoP/​DPoP.Api/​DPoP/​DPoPOptions.cs Removes DPoP options.
BFF/​v2/​DPoP/​DPoP.Api/​DPoP/​DPoPMode.cs Removes DPoP mode enumeration.
BFF/​v2/​DPoP/​DPoP.Api/​DPoP/​DefaultReplayCache.cs Removes replay-cache implementation.
BFF/​v2/​DPoP/​DPoP.Api/​DPoP/​ConfigureJwtBearerOptions.cs Removes JWT/DPoP configuration.
BFF/​v2/​DPoP/​DPoP.Api/​DPoP.Api.csproj Removes API project.
BFF/​v2/​DPoP/​.vscode/​tasks.json Removes build tasks.
BFF/​v2/​DPoP/​.vscode/​launch.json Removes debugger configurations.
BFF/​v2/​BlazorWasm/​Shared/​WeatherForecast.cs Removes shared forecast model.
BFF/​v2/​BlazorWasm/​Shared/​BlazorWasm.Shared.csproj Removes shared project.
BFF/​v2/​BlazorWasm/​Server/​Properties/​launchSettings.json Removes server launch configuration.
BFF/​v2/​BlazorWasm/​Server/​Pages/​Error.cshtml.cs Removes error handler.
BFF/​v2/​BlazorWasm/​Server/​Pages/​Error.cshtml Removes error page.
BFF/​v2/​BlazorWasm/​Server/​Controllers/​WeatherForecastController.cs Removes forecast controller.
BFF/​v2/​BlazorWasm/​Server/​BlazorWasm.Server.csproj Removes server project.
BFF/​v2/​BlazorWasm/​Server/​appsettings.json Removes server settings.
BFF/​v2/​BlazorWasm/​Server/​appsettings.Development.json Removes development settings.
BFF/​v2/​BlazorWasm/​Client/​wwwroot/​index.html Removes browser entry page.
BFF/​v2/​BlazorWasm/​Client/​wwwroot/​css/​open-iconic/​ICON-LICENSE Removes bundled icon license.
BFF/​v2/​BlazorWasm/​Client/​Shared/​SurveyPrompt.razor Removes survey component.
BFF/​v2/​BlazorWasm/​Client/​Shared/​RedirectToLogin.razor Removes login redirect component.
BFF/​v2/​BlazorWasm/​Client/​Shared/​NavMenu.razor Removes navigation component.
BFF/​v2/​BlazorWasm/​Client/​Shared/​MainLayout.razor Removes client layout.
BFF/​v2/​BlazorWasm/​Client/​Shared/​LoginDisplay.razor Removes login display.
BFF/​v2/​BlazorWasm/​Client/​Shared/​CurrentSession.razor Removes session display.
BFF/​v2/​BlazorWasm/​Client/​Properties/​launchSettings.json Removes client launch configuration.
BFF/​v2/​BlazorWasm/​Client/​Program.cs Removes client service setup.
BFF/​v2/​BlazorWasm/​Client/​Pages/​Index.razor Removes client home page.
BFF/​v2/​BlazorWasm/​Client/​Pages/​FetchData.razor Removes forecast page.
BFF/​v2/​BlazorWasm/​Client/​Pages/​Counter.razor Removes counter page.
BFF/​v2/​BlazorWasm/​Client/​BlazorWasm.Client.csproj Removes client project.
BFF/​v2/​BlazorWasm/​Client/​BFF/​AntiforgeryHandler.cs Removes CSRF header handler.
BFF/​v2/​BlazorWasm/​Client/​App.razor Removes application router.
BFF/​v2/​BlazorWasm/​Client/​_Imports.razor Removes shared Razor imports.
BFF/​v2/​BlazorWasm/​BlazorWasm.slnx Removes retired solution.
BFF/​v2/​Angular/​Angular.slnx Removes retired solution.
BFF/​v2/​Angular/​angular.client/​tsconfig.spec.json Removes test TypeScript configuration.
BFF/​v2/​Angular/​angular.client/​tsconfig.json Removes TypeScript configuration.
BFF/​v2/​Angular/​angular.client/​tsconfig.app.json Removes application TypeScript configuration.
BFF/​v2/​Angular/​angular.client/​src/​styles.css Removes global stylesheet.
BFF/​v2/​Angular/​angular.client/​src/​proxy.conf.js Removes development proxy configuration.
BFF/​v2/​Angular/​angular.client/​src/​main.ts Removes Angular bootstrap code.
BFF/​v2/​Angular/​angular.client/​src/​index.html Removes browser entry page.
BFF/​v2/​Angular/​angular.client/​src/​assets/​.gitkeep Removes asset-directory placeholder.
BFF/​v2/​Angular/​angular.client/​src/​app/​user-session/​user-session.component.ts Removes session component.
BFF/​v2/​Angular/​angular.client/​src/​app/​user-session/​user-session.component.spec.ts Removes session component test.
BFF/​v2/​Angular/​angular.client/​src/​app/​user-session/​user-session.component.html Removes session template.
BFF/​v2/​Angular/​angular.client/​src/​app/​user-session/​user-session.component.css Removes session stylesheet.
BFF/​v2/​Angular/​angular.client/​src/​app/​todos/​todos.component.css Removes todo stylesheet.
BFF/​v2/​Angular/​angular.client/​src/​app/​nav-menu/​nav-menu.component.ts Removes navigation component.
BFF/​v2/​Angular/​angular.client/​src/​app/​nav-menu/​nav-menu.component.css Removes navigation styles.
BFF/​v2/​Angular/​angular.client/​src/​app/​home/​home.component.ts Removes home component.
BFF/​v2/​Angular/​angular.client/​src/​app/​home/​home.component.html Removes home template.
BFF/​v2/​Angular/​angular.client/​src/​app/​csrf-header.interceptor.ts Removes CSRF interceptor.
BFF/​v2/​Angular/​angular.client/​src/​app/​app.server.module.ts Removes server-rendering module.
BFF/​v2/​Angular/​angular.client/​src/​app/​app.module.ts Removes application module.
BFF/​v2/​Angular/​angular.client/​src/​app/​app.component.ts Removes root component.
BFF/​v2/​Angular/​angular.client/​src/​app/​app.component.html Removes root template.
BFF/​v2/​Angular/​angular.client/​src/​app/​app.component.css Removes root styles.
BFF/​v2/​Angular/​angular.client/​README.md Removes client documentation.
BFF/​v2/​Angular/​angular.client/​nuget.config Removes NuGet configuration.
BFF/​v2/​Angular/​angular.client/​karma.conf.js Removes test-runner configuration.
BFF/​v2/​Angular/​angular.client/​aspnetcore-https.js Removes development certificate script.
BFF/​v2/​Angular/​angular.client/​angular.client.esproj Removes JavaScript project.
BFF/​v2/​Angular/​angular.client/​.vscode/​tasks.json Removes client development tasks.
BFF/​v2/​Angular/​angular.client/​.vscode/​launch.json Removes browser launch configuration.
BFF/​v2/​Angular/​angular.client/​.vscode/​extensions.json Removes editor recommendations.
BFF/​v2/​Angular/​angular.client/​.gitignore Removes client ignore rules.
BFF/​v2/​Angular/​angular.client/​.editorconfig Removes editor configuration.
BFF/​v2/​Angular/​Angular.Bff/​Properties/​launchSettings.json Removes BFF launch configuration.
BFF/​v2/​Angular/​Angular.Bff/​appsettings.json Removes BFF settings.
BFF/​v2/​Angular/​Angular.Bff/​appsettings.Development.json Removes development settings.
BFF/​v2/​Angular/​Angular.Bff/​Angular.Bff.csproj Removes BFF project.
BFF/​v2/​Angular/​Angular.Api/​Properties/​launchSettings.json Removes API launch configuration.
BFF/​v2/​Angular/​Angular.Api/​Program.cs Removes API startup code.
BFF/​v2/​Angular/​Angular.Api/​appsettings.json Removes API settings.
BFF/​v2/​Angular/​Angular.Api/​appsettings.Development.json Removes development settings.
BFF/​v2/​Angular/​Angular.Api/​Angular.Api.csproj Removes API project.
BFF/​v2/​Angular/​.vscode/​tasks.json Removes build tasks.
BFF/​v2/​Angular/​.vscode/​launch.json Removes debugger configurations.

Review effort: Balanced

- Use option names (--input-file etc.) instead of descriptions as the
  option name; whitespace in names throws at startup, even for --help
- Move the explanatory text to Description, keeping the short aliases
- Make Main async and await InvokeAsync so the async action runs

Applies to both the BFF v3 and v4 OpenApi samples.
Copilot AI balanced review requested due to automatic review settings November 2, 2026 16:19

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Removing Microsoft.OpenApi.Readers breaks parsing for still-routed YAML OpenAPI responses because the replacement uses the default JSON reader without YAML support.

2 open issues

Review effort: Balanced

Microsoft.OpenApi 2.x only registers a JSON reader by default, and the
1.x Microsoft.OpenApi.Readers package (which handled YAML) was removed in
the upgrade. The BFF still proxies /openapi/{document}.yaml, so those
responses failed to parse.

- Add Microsoft.OpenApi.YamlReader 2.12.0 and register it via
  OpenApiReaderSettings.AddYamlReader()
- Handle documents without components (now null in 2.x) instead of
  throwing a NullReferenceException
- Fail with the reader diagnostics when a document can't be read

Applies to both the BFF v3 and v4 OpenApi samples.
Copilot AI balanced review requested due to automatic review settings November 2, 2026 16:37
@maartenba

Copy link
Copy Markdown
Member Author

Addressed the YAML finding from the latest review in ede847d: Microsoft.OpenApi 2.x only reads JSON by default, so I added Microsoft.OpenApi.YamlReader (2.12.0) and registered it via OpenApiReaderSettings.AddYamlReader() in the transformer used for proxied /openapi/*.yaml responses. While testing I also fixed a 2.x null-collection regression (documents without components threw a NullReferenceException) and made unreadable documents fail with the reader diagnostics. Applied to both the v3 and v4 OpenApi samples; verified with YAML, JSON and invalid input.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The .NET 10 migration spans authentication, rendering, Aspire, and containers, while build-only CI leaves login/logout, token exchange, and DPoP flows without runtime integration validation.

No open issues 🎉

2 resolved since last review

Review effort: Balanced

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants