Etappe 5 hatte einen bug: nach dem prerendered HTML hat svelteKit beim
ersten clientseitigen navigations-tick nochmal load() aufgerufen, das
hat im browser-pfad pauschal 404 geworfen. Sichtbarer effekt: seite
zeigt kurz den korrekten inhalt, springt dann auf "Post nicht
gefunden".
Fix-strategie D aus dem chat:
- snapshot/output/posts/*.json wird vor dem build nach
app/static/snapshot-data/posts/ kopiert (deploy-skript + workflow)
- +page.ts im browser-pfad fetcht dann /snapshot-data/posts/<slug>.json
- 404 nur noch wenn die JSON wirklich nicht existiert (= slug nicht
im snapshot)
Damit funktionieren sowohl hard-reload (svelteKit hydriert die
prerendered page-data direkt) als auch clientseitige navigation
zwischen detail-seiten.
app/static/snapshot-data/ ist gitignored — wird zur build-zeit aus
snapshot/output/ generiert.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
curl hat den ersten upload mit "URL using bad/illegal format"
abgebrochen. Wahrscheinliche ursache: trailing newline in einem
der FTP-secrets (passiert beim copy-paste in die GitHub-secrets-UI,
wenn der quell-string ein \n am ende hatte).
tr -d '\r\n' entfernt CR/LF aus allen vier FTP-vars, bevor sie in
die URL gehen.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bewusst kein auto-trigger: kontrolle bleibt beim menschen, wer wann
auf welche subdomain deployt. Aufruf via "Actions" → "Build + Deploy
SPA" → "Run workflow", target ist 'svelte' (default), 'staging' oder
'prod'. 1:1 abbild der lokalen scripts/deploy-svelte.sh-logik:
1. snapshot ziehen (Deno)
2. SvelteKit bauen (Node)
3. __SITE_URL__-substitution
4. __HTML_LANG__-substitution pro detail-HTML aus snapshot/output
5. FTPS-upload pro datei via curl --tls-max 1.2 (All-Inkl-friendly)
6. live-check via curl
Voraussetzung: SVELTE_FTP_*, STAGING_FTP_* als github-secrets hinterlegen.
AUTHOR_PUBKEY_HEX + BOOTSTRAP_RELAY existieren bereits aus publish-pipeline.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>