From 568bc99a36e3b6ed9fce9f8050dda0124e6b19d1 Mon Sep 17 00:00:00 2001 From: m Date: Tue, 5 May 2026 11:07:41 +0200 Subject: [PATCH] =?UTF-8?q?feat(t-paliad-133):=20Phase=20E=20=E2=80=94=20r?= =?UTF-8?q?etire=20legacy=20mode=20tabs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit m's spec lock §10 Q1 (2026-05-05): "Retire legacy tabs - we are only resorting." This commit drops the .fristen-mode-tabs nav (Verfahrensablauf + Was kommt nach…) and the ?legacy=1 escape hatch. Pathway A becomes Verfahrensablauf-only; the trigger-event panel (mode-event-panel) stays in the DOM but is hidden by default and surfaces only via concept-card pill drill-in (drillToTrigger flips the panels directly). Frontend deltas: - frontend/src/fristenrechner.tsx: drop .fristen-mode-tabs section; rename mode-event-panel role/label to standalone tabpanel. - frontend/src/client/fristenrechner.ts: - drop isLegacyMode() + ?legacy=1 branch in showPathway(). - drillToTrigger() now flips procedure ↔ event panels directly (no more #mode-event-tab click → handler chain). - initModeTabs() bails on tabs.length===0 (already does); no further changes needed. - frontend/src/styles/global.css: drop .fristen-pathway-shell--legacy. Backend untouched. Build: clean. Frontend bundle 1473 keys unchanged. go build + vet + tests pass. The deadlines.mode.procedure / deadlines.mode.event i18n keys remain in i18n.ts as orphans for now; cleaning them up is purely cosmetic and lives outside the v3 scope. --- frontend/src/client/fristenrechner.ts | 26 ++++++++------------------ frontend/src/fristenrechner.tsx | 13 ++++++------- frontend/src/styles/global.css | 11 ----------- 3 files changed, 14 insertions(+), 36 deletions(-) diff --git a/frontend/src/client/fristenrechner.ts b/frontend/src/client/fristenrechner.ts index 2ca55b1..a8b17ae 100644 --- a/frontend/src/client/fristenrechner.ts +++ b/frontend/src/client/fristenrechner.ts @@ -1455,9 +1455,14 @@ function drillToProceeding(procCode: string, focusCode: string | null) { } function drillToTrigger(triggerId: number) { - const eventTab = document.getElementById("mode-event-tab"); - if (eventTab) eventTab.click(); - // Defer a tick so the tab activation has run before we touch event-mode state. + // v3 (Phase E): legacy tabs are gone. Show the event panel directly. + // Triggered from concept-card pill clicks; routes via Pathway A so the + // Verfahrensablauf user surface stays consistent. + const procedurePanel = document.getElementById("mode-procedure-panel"); + const eventPanel = document.getElementById("mode-event-panel"); + if (procedurePanel) procedurePanel.hidden = true; + if (eventPanel) eventPanel.hidden = false; + // Defer a tick so the panel swap has rendered before we touch state. window.setTimeout(() => { selectTriggerEvent(triggerId); document.getElementById("event-step-2")?.scrollIntoView({ behavior: "smooth", block: "start" }); @@ -1578,7 +1583,6 @@ const PATHWAY_STORAGE_KEY = "paliad.fristen.pathway"; function readPathwayFromURL(): Pathway { const sp = new URLSearchParams(window.location.search); - if (sp.get("legacy") === "1") return "fork"; // legacy mode: ignore path const p = sp.get("path"); if (p === "a" || p === "b") return p; return "fork"; @@ -1594,10 +1598,6 @@ function readBModeFromURL(): BMode { return "tree"; } -function isLegacyMode(): boolean { - return new URLSearchParams(window.location.search).get("legacy") === "1"; -} - function setPathwayURL(path: Pathway, mode?: BMode, replace = false) { const url = new URL(window.location.href); if (path === "fork") { @@ -1625,16 +1625,6 @@ function showPathway(path: Pathway, mode?: BMode) { const b = document.getElementById("fristen-pathway-b"); if (!fork || !a || !b) return; - if (isLegacyMode()) { - // Legacy view: hide the fork + Pathway-A heading wrapper, show the - // wizard flat as it was pre-v3. - fork.hidden = true; - a.hidden = false; - a.classList.add("fristen-pathway-shell--legacy"); - b.hidden = true; - return; - } - fork.hidden = path !== "fork"; a.hidden = path !== "a"; b.hidden = path !== "b"; diff --git a/frontend/src/fristenrechner.tsx b/frontend/src/fristenrechner.tsx index cd72dcc..0f12fea 100644 --- a/frontend/src/fristenrechner.tsx +++ b/frontend/src/fristenrechner.tsx @@ -200,12 +200,11 @@ export function renderFristenrechner(): string { Verfahrensablauf informieren -
- - -
- -
+ {/* v3: legacy mode tabs retired (m's spec lock §10 Q1, 2026-05-05). + Pathway A is Verfahrensablauf-only; trigger-event drill-in + surfaces via concept-card pills with ?path=a&trigger=N URL, + which resurfaces mode-event-panel programmatically below. */} +

1 @@ -331,7 +330,7 @@ export function renderFristenrechner(): string {

-