mbproxy: close out the dashboard code-review minor findings
Resolves the remaining Minor items from the 2026-05-15 review so the web-UI dashboard work has no open follow-ups: a real-HubConnection end-to-end test for the SignalR feed, stable mbproxy.admin.broadcast.* log-event names, keyboard/aria accessibility on the fleet table, frontend JS hardening (URL-decode guard, NaN guards, shared util.js), reconciler<->capture-registry coverage, throwing-sink and embedded-asset tests, broadcaster polish, and a soft upper bound on AdminPushIntervalMs. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -11,7 +11,8 @@ public sealed class MbproxyOptions
|
||||
/// <summary>
|
||||
/// Server-push cadence (milliseconds) for the admin dashboard's SignalR feed.
|
||||
/// Every interval the admin endpoint builds a status snapshot and pushes it to
|
||||
/// connected dashboard / detail-page clients. Must be > 0. Defaults to 1000.
|
||||
/// connected dashboard / detail-page clients. Must be in the range 1–60000 ms
|
||||
/// (a value past a minute makes the "live" feed non-live). Defaults to 1000.
|
||||
/// </summary>
|
||||
public int AdminPushIntervalMs { get; init; } = 1000;
|
||||
|
||||
@@ -114,8 +115,12 @@ public sealed class MbproxyOptionsValidator : IValidateOptions<MbproxyOptions>
|
||||
errors.Add(
|
||||
$"Connection.GracefulShutdownTimeoutMs must be > 0; got {options.Connection.GracefulShutdownTimeoutMs}.");
|
||||
|
||||
if (options.AdminPushIntervalMs <= 0)
|
||||
errors.Add($"AdminPushIntervalMs must be > 0; got {options.AdminPushIntervalMs}.");
|
||||
// AdminPushIntervalMs has a soft upper bound: a value past a minute makes the
|
||||
// dashboard's "live" feed effectively non-live, which is almost always a typo
|
||||
// (e.g. a seconds value pasted as milliseconds) rather than an intent.
|
||||
if (options.AdminPushIntervalMs <= 0 || options.AdminPushIntervalMs > 60_000)
|
||||
errors.Add(
|
||||
$"AdminPushIntervalMs must be between 1 and 60000 ms; got {options.AdminPushIntervalMs}.");
|
||||
|
||||
// Keepalive section ranges. Cross-field rules (heartbeat interval vs request
|
||||
// timeout) are enforced in ReloadValidator.
|
||||
|
||||
Reference in New Issue
Block a user