Org hub for early-effect libraries.
Built with specular from published micro-site
metadata.json URLs listed in catalog-urls.txt.
The hub SSRs optional first-paint cards, then an Ascent Scala.js client
(LiveCatalog.bootstrap) re-fetches allowlisted manifests on each page load. Library
version bumps appear on refresh; 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)- 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 scalafmtCheckAll