Skip to content

v0.8.0 — native gofastr export (SSG) + site repositioning

Choose a tag to compare

@DonaldMurillo DonaldMurillo released this 18 Jun 13:17
· 14 commits to main since this release

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 broken wget --mirror crawl 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 /__gofastr assets 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 into runtime.js.
  • Runtime static-mode — a data-fui-static marker (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).
  • /examples Meridian row shows the real, full examples/meridian/gofastr.yml blueprint — embedded at build time, drift-guarded by a test, in a scrollable copyable block.
  • New framework/docs/content/static-export.md guide; pages.yml now runs site --export _site --export-base /gofastr.

Fixed

  • Sticky sidebars were silently broken site-wide. body { overflow-x: hidden } forced overflow-y to auto, turning <body> into a scroll container so every position: sticky descendant (docs + components sidebars, TOC, step-rail) anchored to the non-scrolling body and scrolled away. Guard moved to html.
  • 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 the SectionMenu widget; 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 (dev locally, v0.8.0 tagged).

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 racecore-ui/island ServeSSE flushed response headers before subscribing, so a client that pushed immediately on connect had its update silently dropped (the TestServeSSE CI 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 main is branch-protected with required CI checks.

Full details in CHANGELOG.md.