From 5510ae22da61fd47ed506ce28e246287e1351504 Mon Sep 17 00:00:00 2001 From: Bernd Worsch Date: Wed, 8 Apr 2026 02:02:44 +0000 Subject: [PATCH] feat(WP-0015/B1-B6): StaticPages controller and public intro/tutorial UI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit B1 — Web/Controller/StaticPages.hs: LandingAction, CapabilitiesAction, TutorialAction, ExtensionGuideAction (no auth guard) B2 — Web/View/StaticPages/Landing.hs: hero, traceability chain, capability grid, GAAF status bar, CTAs to capabilities and management UI B3 — Web/View/StaticPages/Capabilities.hs: 12-phase capability map, GAAF scorecard, API v1/v2 surface table, learning loop, type registry system B4 — Web/View/StaticPages/Tutorial.hs: 6-step developer tutorial (widgets, events, governance, deployment, learning, federation) Web/View/StaticPages/ExtensionGuide.hs: 6-step hub extension guide (HubCapabilityManifest, type registry, widgets, patterns, agents) with GAAF rules summary B5 — Web/Routes.hs: StaticPagesController manual routes; "/" → Landing, "/capabilities", "/tutorial", "/extension-guide" Web/Types.hs: StaticPagesController data type B6 — Web/FrontController.hs: import StaticPagesController; register route (last, catches root); nav adds About/Tutorial/Extend links and separator; logo now links to LandingAction B7 (deployment verification) remains pending until devenv up is available. Co-Authored-By: Claude Sonnet 4.6 --- Web/Controller/StaticPages.hs | 18 +++ Web/FrontController.hs | 10 +- Web/Routes.hs | 15 +++ Web/Types.hs | 9 ++ Web/View/StaticPages/Capabilities.hs | 135 ++++++++++++++++++++++ Web/View/StaticPages/ExtensionGuide.hs | 150 +++++++++++++++++++++++++ Web/View/StaticPages/Landing.hs | 129 +++++++++++++++++++++ Web/View/StaticPages/Tutorial.hs | 126 +++++++++++++++++++++ 8 files changed, 591 insertions(+), 1 deletion(-) create mode 100644 Web/Controller/StaticPages.hs create mode 100644 Web/View/StaticPages/Capabilities.hs create mode 100644 Web/View/StaticPages/ExtensionGuide.hs create mode 100644 Web/View/StaticPages/Landing.hs create mode 100644 Web/View/StaticPages/Tutorial.hs diff --git a/Web/Controller/StaticPages.hs b/Web/Controller/StaticPages.hs new file mode 100644 index 0000000..23ed04d --- /dev/null +++ b/Web/Controller/StaticPages.hs @@ -0,0 +1,18 @@ +module Web.Controller.StaticPages where + +-- WP-0015 — Public-facing intro and tutorial pages (no auth required) + +import Web.Types +import Generated.Types +import IHP.Prelude +import IHP.ControllerPrelude +import Web.View.StaticPages.Landing +import Web.View.StaticPages.Capabilities +import Web.View.StaticPages.Tutorial +import Web.View.StaticPages.ExtensionGuide + +instance Controller StaticPagesController where + action LandingAction = render LandingView + action CapabilitiesAction = render CapabilitiesView + action TutorialAction = render TutorialView + action ExtensionGuideAction = render ExtensionGuideView diff --git a/Web/FrontController.hs b/Web/FrontController.hs index 424c51d..0f03fee 100644 --- a/Web/FrontController.hs +++ b/Web/FrontController.hs @@ -70,6 +70,8 @@ import Web.Controller.LineageEnrichment () import Web.Controller.LearningDashboard () import Web.Controller.Api.V2.Learning () import Web.Controller.Sessions () +-- WP-0015 — Public intro / tutorial pages +import Web.Controller.StaticPages () instance FrontController WebApplication where controllers = @@ -135,6 +137,8 @@ instance FrontController WebApplication where , parseRoute @LineageEnrichmentController , parseRoute @LearningDashboardController , parseRoute @ApiV2LearningController + -- WP-0015 — Public intro / tutorial pages (must be last; catches "/" root) + , parseRoute @StaticPagesController ] instance InitControllerContext WebApplication where @@ -165,7 +169,11 @@ defaultLayout inner = [hsx|