diff --git a/src/MxGateway.Server/Dashboard/Components/Pages/ApiKeysPage.razor b/src/MxGateway.Server/Dashboard/Components/Pages/ApiKeysPage.razor index 545139c..9a058a3 100644 --- a/src/MxGateway.Server/Dashboard/Components/Pages/ApiKeysPage.razor +++ b/src/MxGateway.Server/Dashboard/Components/Pages/ApiKeysPage.razor @@ -1,4 +1,5 @@ @page "/apikeys" +@page "/dashboard/apikeys" @inherits DashboardPageBase @inject AuthenticationStateProvider AuthenticationStateProvider @inject IDashboardApiKeyManagementService ApiKeyManagementService diff --git a/src/MxGateway.Server/Dashboard/Components/Pages/DashboardHome.razor b/src/MxGateway.Server/Dashboard/Components/Pages/DashboardHome.razor index 919594d..0197588 100644 --- a/src/MxGateway.Server/Dashboard/Components/Pages/DashboardHome.razor +++ b/src/MxGateway.Server/Dashboard/Components/Pages/DashboardHome.razor @@ -1,4 +1,5 @@ @page "/" +@page "/dashboard/" @inherits DashboardPageBase MXAccess Gateway Dashboard diff --git a/src/MxGateway.Server/Dashboard/Components/Pages/EventsPage.razor b/src/MxGateway.Server/Dashboard/Components/Pages/EventsPage.razor index 0e0b687..e5401ec 100644 --- a/src/MxGateway.Server/Dashboard/Components/Pages/EventsPage.razor +++ b/src/MxGateway.Server/Dashboard/Components/Pages/EventsPage.razor @@ -1,4 +1,5 @@ @page "/events" +@page "/dashboard/events" @inherits DashboardPageBase Dashboard Events diff --git a/src/MxGateway.Server/Dashboard/Components/Pages/GalaxyPage.razor b/src/MxGateway.Server/Dashboard/Components/Pages/GalaxyPage.razor index 48e97e2..3c5e4a2 100644 --- a/src/MxGateway.Server/Dashboard/Components/Pages/GalaxyPage.razor +++ b/src/MxGateway.Server/Dashboard/Components/Pages/GalaxyPage.razor @@ -1,4 +1,5 @@ @page "/galaxy" +@page "/dashboard/galaxy" @inherits DashboardPageBase Dashboard Galaxy diff --git a/src/MxGateway.Server/Dashboard/Components/Pages/SessionDetailsPage.razor b/src/MxGateway.Server/Dashboard/Components/Pages/SessionDetailsPage.razor index 0eddbbc..569ad72 100644 --- a/src/MxGateway.Server/Dashboard/Components/Pages/SessionDetailsPage.razor +++ b/src/MxGateway.Server/Dashboard/Components/Pages/SessionDetailsPage.razor @@ -1,4 +1,5 @@ @page "/sessions/{SessionId}" +@page "/dashboard/sessions/{SessionId}" @inherits DashboardPageBase Dashboard Session diff --git a/src/MxGateway.Server/Dashboard/Components/Pages/SessionsPage.razor b/src/MxGateway.Server/Dashboard/Components/Pages/SessionsPage.razor index e8df4dc..5c60e20 100644 --- a/src/MxGateway.Server/Dashboard/Components/Pages/SessionsPage.razor +++ b/src/MxGateway.Server/Dashboard/Components/Pages/SessionsPage.razor @@ -1,4 +1,5 @@ @page "/sessions" +@page "/dashboard/sessions" @inherits DashboardPageBase Dashboard Sessions diff --git a/src/MxGateway.Server/Dashboard/Components/Pages/SettingsPage.razor b/src/MxGateway.Server/Dashboard/Components/Pages/SettingsPage.razor index 120aac0..ebf9930 100644 --- a/src/MxGateway.Server/Dashboard/Components/Pages/SettingsPage.razor +++ b/src/MxGateway.Server/Dashboard/Components/Pages/SettingsPage.razor @@ -1,4 +1,5 @@ @page "/settings" +@page "/dashboard/settings" @inherits DashboardPageBase Dashboard Settings diff --git a/src/MxGateway.Server/Dashboard/Components/Pages/WorkersPage.razor b/src/MxGateway.Server/Dashboard/Components/Pages/WorkersPage.razor index 4811852..80f8182 100644 --- a/src/MxGateway.Server/Dashboard/Components/Pages/WorkersPage.razor +++ b/src/MxGateway.Server/Dashboard/Components/Pages/WorkersPage.razor @@ -1,4 +1,5 @@ @page "/workers" +@page "/dashboard/workers" @inherits DashboardPageBase Dashboard Workers diff --git a/src/MxGateway.Tests/Gateway/GatewayApplicationTests.cs b/src/MxGateway.Tests/Gateway/GatewayApplicationTests.cs index f1b6dfe..eb3ac52 100644 --- a/src/MxGateway.Tests/Gateway/GatewayApplicationTests.cs +++ b/src/MxGateway.Tests/Gateway/GatewayApplicationTests.cs @@ -100,13 +100,18 @@ public sealed class GatewayApplicationTests } /// - /// Server-020 regression: every dashboard Razor page used to declare both - /// @page "/X" and @page "/dashboard/X", which — once - /// MapGroup("/dashboard") prepended the path base — produced both - /// /dashboard/X AND /dashboard/dashboard/X routes. The second - /// shape was almost certainly accidental and is no longer registered. The - /// check covers every dashboard page so a future page that brings back the - /// duplicated @page directive fails CI. + /// Server-020 regression guard. The original Server-020 finding incorrectly + /// concluded that the duplicate @page "/dashboard/X" directives were + /// redundant because MapGroup("/dashboard") would prepend the prefix + /// to all dashboard Razor pages. In practice Blazor SSR's @page + /// template matcher does NOT compose with MapGroup, so removing the + /// /dashboard/X directive left the dashboard unreachable at runtime + /// (every page returned HTTP 500 with "Unable to find the provided template + /// '/dashboard/'" from RouteTableFactory.CreateEntry). The duplicate + /// @page directives are restored. This test only confirms the + /// genuinely-double-prefixed shape (/dashboard/dashboard/X) never + /// appears — it never did, since the original duplicates were + /// "/" + "/dashboard/", not "/dashboard/" repeated. /// [Fact] public async Task Build_WhenDashboardEnabled_DoesNotRegisterDoubledDashboardPrefixRoutes()