v0.8.0 — native gofastr export (SSG) + site repositioning
v0.8.0 — native gofastr export (SSG) + site repositioning
Added
gofastr export— native static-site generation. The framework now exports a deploy-ready static site itself, replacing the brokenwget --mirrorcrawl used for the Pages deploy. The crawl baked cache-bust?v=<hash>queries into on-disk module filenames; the static host stripped the query, every split runtime module 404'd, and all client interactivity silently died (theme toggle, command palette, copy, widgets).App.ExportStatic(ctx, dir, basePath)drives the app in-process, enumerates every declared route, renders each through the SSG path, and dumps all/__gofastrassets with query-free filenames.- Subpath base path (
--export-base /<repo>) for GitHub Pages project URLs; the builder prefixes every root-absolute URL and bakes the prefix intoruntime.js. - Runtime static-mode — a
data-fui-staticmarker (stamped only at export time) no-ops every server-backed dispatch so disabled actions read as intentionally inactive, with a dismissible "run locally"ui.Banner. Client-only features (theme, copy, signals) are unaffected. ui.CodeBlock.Scroll+ui.HighlightLines(framework/ui)./examplesMeridian row shows the real, fullexamples/meridian/gofastr.ymlblueprint — embedded at build time, drift-guarded by a test, in a scrollable copyable block.- New
framework/docs/content/static-export.mdguide;pages.ymlnow runssite --export _site --export-base /gofastr.
Fixed
- Sticky sidebars were silently broken site-wide.
body { overflow-x: hidden }forcedoverflow-ytoauto, turning<body>into a scroll container so everyposition: stickydescendant (docs + components sidebars, TOC, step-rail) anchored to the non-scrolling body and scrolled away. Guard moved tohtml. - Components-page sidebar wouldn't pin even after the above — the framework's sidebar
<nav>wrapper is the grid column but didn't pass its height to theSectionMenuwidget; it's now a flex column. - Header brand read as a doubled version (
λ gofastr v0.x dev) — dropped the static tag; the badge shows one version (devlocally,v0.8.0tagged).
Changed
- Homepage + getting-started repositioned to lead with screens + blueprints (new "One file, a real app" section).
- Kiln marked experimental across the site + docs.
Also in this release (post-tag hardening, included)
These landed after the v0.8.0 tag was first cut, so the tag was moved to the commit that includes them before this Release was published:
- Homepage a11y — the new "real app" section's screen-mock URL failed color-contrast and its Meridian link failed link-in-text-block, in both color schemes; fixed (axe gate green).
- Island SSE push-drop race —
core-ui/islandServeSSEflushed response headers before subscribing, so a client that pushed immediately on connect had its update silently dropped (theTestServeSSECI timeout). Subscribe now precedes the header flush. - Supply-chain hardening — every CI action is now SHA-pinned to an immutable commit (floating tags can no longer swap code into runs), and
mainis branch-protected with required CI checks.
Full details in CHANGELOG.md.