Skip to content

v1.0.0-beta.18

@koehler8 koehler8 tagged this 05 May 01:17
Marks a site, URL prefix, or single page as not-yet-public so search
engines stay out (noindex meta + sitemap exclusion + robots Disallow)
and casual visitors hit a password gate that replaces the page body in
the SSG-rendered HTML.

- New schema fields on site.json (`draft`, `draftPaths[]`, `draftPassword`)
  and per-page `draft`. Page-level wins both ways over site/prefix.
- Plaintext `draftPassword` is replaced with a SHA-256
  `draftPasswordHash` by a Vite transform hook before the JSON enters
  the bundle, so it never reaches dist/ or __INITIAL_STATE__.
- Draft pages emit `<title>Draft — {Site}</title>` + suppressed meta
  description so the page slug/explicit meta don't leak.
- robots.txt + sitemap.xml are now generated dynamically from the
  inflated config on every build (replaces the static
  public/robots.txt).
- 414 tests passing (73 new for draft mode).
- See CHANGELOG.md for the full caveat list including the known v1
  bound: __INITIAL_STATE__ still serializes draft pages' content/meta
  into every rendered page; not feasible to fix without lazy-loading.
  Use case is "iterate before launch," not confidential data.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Assets 2
Loading