diff --git a/Aetheria.Rts.Web/Electron/aetheria-cultmesh.ts b/Aetheria.Rts.Web/Electron/aetheria-cultmesh.ts index 4bd128a98..4c638f21e 100644 --- a/Aetheria.Rts.Web/Electron/aetheria-cultmesh.ts +++ b/Aetheria.Rts.Web/Electron/aetheria-cultmesh.ts @@ -926,34 +926,8 @@ function eveSurfaceRecordKey(request: AetheriaEveSurfaceRequest): string { if (request?.recordKey && request.recordKey.trim()) return request.recordKey.trim(); - switch (request?.surfaceId) { - case "aetheria.game": - case "aetheria.daemon.game": - return "eve:surface:aetheria.daemon.game"; - case "aetheria.game.tui": - case "aetheria.daemon.game.tui": - return "eve:surface:aetheria.daemon.game.tui"; - case "aetheria.main_menu.root": - return "eve:surface:aetheria.main_menu.root"; - case "aetheria.main_menu.settings": - return "eve:surface:aetheria.main_menu.settings"; - case "aetheria.main_menu.input_settings": - return "eve:surface:aetheria.main_menu.input_settings"; - case "aetheria.main_menu.player_settings": - return "eve:surface:aetheria.main_menu.player_settings"; - case "aetheria.main_menu.verse_settings": - return "eve:surface:aetheria.main_menu.verse_settings"; - case "aetheria.inventory.panel": - return "eve:surface:aetheria.inventory.panel"; - case "aetheria.inventory.panel.dropdown": - return "eve:surface:aetheria.inventory.panel.dropdown"; - case "aetheria.map.zone_details": - return "eve:surface:aetheria.map.zone_details"; - case "aetheria.trade.menu": - return "eve:surface:aetheria.trade.menu"; - default: - return defaultEveSurfaceRecordKey; - } + const surfaceId = request?.surfaceId?.trim(); + return surfaceId ? `eve:surface:${surfaceId}` : defaultEveSurfaceRecordKey; } function normalizeEveSurfaceDocument(document: unknown): AetheriaMenuSurfaceDocument { diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index 442b4de97..12faf767b 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -16721,6 +16721,13 @@ static void RequireUnityDoesNotCallSharedSimulationTicks(string root) throw new InvalidOperationException( "Electron queries must fetch daemon-authored managed documents, not rebuild field/view/selection/inventory documents from daemonFrame."); } + if (rtsElectronCultMesh.Contains("switch (request?.surfaceId)", StringComparison.Ordinal) || + rtsElectronCultMesh.Contains("case \"aetheria.", StringComparison.Ordinal) || + !rtsElectronCultMesh.Contains("return surfaceId ? `eve:surface:${surfaceId}` : defaultEveSurfaceRecordKey;", StringComparison.Ordinal)) + { + throw new InvalidOperationException( + "Electron Eve surface loading must not carry a hardcoded Aetheria panel catalog; Eve surface ids resolve through daemon-authored surface records."); + } if (rtsLocalDocuments.Contains("buildViewportDocumentFromFrame", StringComparison.Ordinal) || rtsLocalDocuments.Contains("buildObjectsViewportDocumentFromFrame", StringComparison.Ordinal) || rtsLocalDocuments.Contains("buildGravityViewportDocumentFromFrame", StringComparison.Ordinal) ||