joerglohrerde/snapshot
Jörg Lohrer 3e31caacef fix(spa): prerender-build laeuft + meta/json-ld korrekt
Drei build-blocker beim ersten prerender-versuch identifiziert und gefixt:

1. svelte.config.js: handleHttpError + handleMissingId fuer den
   prerender-crawler. Der crawler folgt zur build-zeit allen hrefs/srcs
   im HTML — sieht dabei
   - __SITE_URL__-platzhalter in canonical/hreflang (werden im deploy
     per sed ersetzt, sind keine echten routes)
   - relative bild-paths in alten posts (z.B. h01-json-import.png)
   - anchor-links auf headings ohne id-attribute (#ACF-JSON-Export)
   Alle drei sind keine echten 404s — handlers ignorieren sie.

2. +page.svelte: <script type="application/ld+json">{jsonLd}</script>
   in <svelte:head> rendert {jsonLd} als literalen string, weil svelte
   den script-tag-inhalt nicht als expression evaluiert. Zurueck zu
   {@html ...} mit </script>-escape-hardening, damit titel oder
   beschreibungen mit </script> den output nicht aufbrechen koennen.

3. app.html behaelt seine homepage-defaults fuer og:title/og:url/
   og:description/canonical — der prerender-crawler rendert nur
   detail-routen (/<slug>/), die homepage bleibt SPA-only und braucht
   die defaults im app.html-template, weil dort kein svelte:head greift.
   Detail-routen ueberschreiben per <svelte:head>; last-wins greift bei
   LinkedIn/Mastodon/Browser. Facebook/Twitter (first-wins) haetten
   einen homepage-prerender-schritt noetig — folge-aufgabe.

Plus snapshot/deno.lock committed — deno empfiehlt lockfile-commit fuer
reproduzierbare CI-builds, analog package-lock.json.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 08:50:27 +02:00
..
src fix(snapshot): cache akkumuliert deletedCoords + timeout-kommentar 2026-04-28 08:27:12 +02:00
tests feat(snapshot): relay-loader (kind:10002 + event-fetch) 2026-04-28 08:23:25 +02:00
.gitignore feat(snapshot): modul-skelett 2026-04-28 08:08:17 +02:00
README.md feat(snapshot): modul-skelett 2026-04-28 08:08:17 +02:00
deno.jsonc feat(snapshot): modul-skelett 2026-04-28 08:08:17 +02:00
deno.lock fix(spa): prerender-build laeuft + meta/json-ld korrekt 2026-04-28 08:50:27 +02:00

README.md

snapshot/

Liest die kind:30023-Events des Site-Autors von den Read-Relays und schreibt sie als JSON-Artefakte für den SvelteKit-Prerender-Schritt. Kein Live-Proxy: Relays werden nur zur Build-Zeit befragt.

Spec: ../docs/superpowers/specs/2026-04-21-prerender-snapshot-design.md

Nutzung

cd snapshot
deno task snapshot                    # default
deno task snapshot --out ./output     # alternatives Ziel
deno task snapshot --min-events 20    # Schwelle
deno task snapshot --allow-shrink     # Drop-Check aus

Erwartet diese Env-Vars (aus ../.env.local):

  • AUTHOR_PUBKEY_HEX (64 hex chars)
  • BOOTSTRAP_RELAY (wss-URL)