From afdd24e0808b8165a180a6a1c2d239ca15ab2cc5 Mon Sep 17 00:00:00 2001 From: HeinrichNeb Date: Sun, 16 Aug 2026 01:33:18 +0200 Subject: [PATCH] =?UTF-8?q?KAN-FABRIK-SEITE:=20Glaeserne=20Fabrik=20als=20?= =?UTF-8?q?Menuepunkt=20(G=20F)=20=E2=80=94=20Proxy-Allowlist,=20Seite=20n?= =?UTF-8?q?ach=20Cortex-Muster,=20Navigation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/components/SideNavigation.tsx | 13 ++++++++++ .../web/src/pages/api/mothership/[...path].ts | 1 + apps/web/src/pages/fabrik/index.tsx | 24 +++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 apps/web/src/pages/fabrik/index.tsx diff --git a/apps/web/src/components/SideNavigation.tsx b/apps/web/src/components/SideNavigation.tsx index 8e4823937..994788310 100644 --- a/apps/web/src/components/SideNavigation.tsx +++ b/apps/web/src/components/SideNavigation.tsx @@ -155,6 +155,19 @@ export default function SideNavigation({ description: t`Go to cortex`, }, }, + { + // cachly: Glaeserne Fabrik (Beweisbetrieb) direkt im Board + name: t`Fabrik`, + href: "/fabrik", + icon: isDarkMode ? templatesIconDark : templatesIconLight, + keyboardShortcut: { + type: "SEQUENCE", + strokes: [{ key: "G" }, { key: "F" }], + action: () => router.push("/fabrik"), + group: "NAVIGATION", + description: t`Go to fabrik`, + }, + }, { name: t`Settings`, href: "/settings", diff --git a/apps/web/src/pages/api/mothership/[...path].ts b/apps/web/src/pages/api/mothership/[...path].ts index 5995217b2..34d0f48e6 100644 --- a/apps/web/src/pages/api/mothership/[...path].ts +++ b/apps/web/src/pages/api/mothership/[...path].ts @@ -27,6 +27,7 @@ const ALLOWED: Record = { wissen: "/wissen", "wissen/data": "/wissen/data", "wissen/graph": "/wissen/graph", + fabrik: "/fabrik", }; export default withRateLimit( diff --git a/apps/web/src/pages/fabrik/index.tsx b/apps/web/src/pages/fabrik/index.tsx new file mode 100644 index 000000000..605430d55 --- /dev/null +++ b/apps/web/src/pages/fabrik/index.tsx @@ -0,0 +1,24 @@ +import type { NextPageWithLayout } from "~/pages/_app"; +import { getDashboardLayout } from "~/components/Dashboard"; + +/** + * cachly: Glaeserne Fabrik als nativer Kan-Menuepunkt. + * Die Fabrik ist der Flugschreiber des Beweisbetriebs (alle Gate-Urteile + * als begehbare Zeitleiste); die UI kommt session-gesichert ueber + * /api/mothership/fabrik (Proxy zu hookd). + */ +const FabrikPage: NextPageWithLayout = () => { + return ( +
+