Org hub for early-effect libraries.
Specular SSRs the landing as an
Ascent tree: typed CSS, five-act story, catalog.
The metadata.json allowlist lives in catalog-urls.txt.
JavaScript is two islands only: live catalog versions, and the compile/does-not flipper. First paint is the board even if the bundle is stale or blocked. Library version bumps still appear once JS runs; rebuild the hub when you change the URL allowlist or hub chrome, not on every library tag.
Header and hero art come from early-effect-docs-theme
(EarlyEffectTheme.logoHref / heroImageHref, written by writeLogo).
Local images/ keeps hub-only rasters (favicon, etc.).
sbt specularSite
# → target/site (includes assets/client.js from hubJS/spliceFull)Production JS is spliceFull (Closure). hubJS/spliceFast is the quicker local iterate.
- Enable Settings → Pages → Source: GitHub Actions
- Actions → Hub site → Run workflow (manual)
Custom domain: www.earlyeffect.rocks (see CNAME).
- Ship docs via
early-effect/.github→specular-docs.ymlsohttps://www.earlyeffect.rocks/<repo>/metadata.jsonexists - Append that URL to
catalog-urls.txt - Run Hub site once (deploys the updated allowlist)
- Later releases of that library update the card on refresh without another hub rebuild
./scripts/install-git-hooks # once per clone: pre-commit runs scalafmtCheckAllCopyright Russell White. Licensed under the Apache License, Version 2.0.