fix(dashboard): bounded alarm drains, feed resubscribe, live pill, drop dead hub factory; doc corrections

This commit is contained in:
Joseph Doherty
2026-08-16 04:12:25 -04:00
parent e1ff05c605
commit 3faa272db9
11 changed files with 240 additions and 127 deletions
@@ -27,23 +27,20 @@ public sealed class DashboardHubsRegistrationTests
endpoint.Metadata.GetMetadata<IEndpointNameMetadata>()?.EndpointName == "DashboardHubToken");
}
/// <summary>Verifies that dashboard build registers hub token service and connection factory.</summary>
/// <summary>
/// Verifies that dashboard build registers the hub token service. It is a singleton
/// shared by the <c>/hubs/token</c> endpoint and <c>HubTokenAuthenticationHandler</c>;
/// there is deliberately no client-side hub-connection factory to resolve, because
/// server-rendered pages read the in-process feeds instead of dialling their own hubs.
/// </summary>
/// <returns>A task that represents the asynchronous operation.</returns>
[Fact]
public async Task Build_WhenDashboardEnabled_RegistersHubTokenServiceAndConnectionFactory()
public async Task Build_WhenDashboardEnabled_RegistersHubTokenService()
{
await using WebApplication app = GatewayApplication.Build([]);
// HubTokenService is singleton; DashboardHubConnectionFactory is scoped
// (it captures NavigationManager and AuthenticationStateProvider which
// are themselves per-circuit).
HubTokenService tokens = app.Services.GetRequiredService<HubTokenService>();
Assert.NotNull(tokens);
using IServiceScope scope = app.Services.CreateScope();
DashboardHubConnectionFactory factory = scope.ServiceProvider
.GetRequiredService<DashboardHubConnectionFactory>();
Assert.NotNull(factory);
}
/// <summary>