6.7 KiB
Handoff — Nächste Session
Du (Claude, nächste Session) oder ich (Jörg, später) kommen hier zurück. Dieses Dokument sagt: was ist der Zustand, was wartet, wo liegen die Fäden.
Zustand (Details in STATUS.md)
Die SvelteKit-SPA unter svelte.joerg-lohrer.de ist fertig und live.
Alle 18 Posts haben jetzt strukturierte Bild-Metadaten im Frontmatter
(Commit c023b59, 91 Bilder). Der Publish-Pipeline-Plan ist geschrieben
(docs/superpowers/plans/2026-04-16-publish-pipeline.md, 24 Tasks in 12 Phasen).
Als nächstes: Pipeline implementieren, beginnend mit Task 1.
Was als Nächstes ansteht
Option 1 — Publish-Pipeline implementieren ⬅ empfohlen
Warum: Spec + Plan fertig, Content vorbereitet, alle Design-Entscheidungen getroffen. Kann direkt losgehen.
Nächster konkreter Schritt:
cd /Users/joerglohrer/repositories/joerglohrerde
Dann den Plan öffnen:
docs/superpowers/plans/2026-04-16-publish-pipeline.md
Und Task 1 (Deno-Projekt-Grundgerüst) starten. Der Plan nutzt TDD; jeder Task hat Test-First, Implementation, Commit.
Ausführungsweisen:
- Subagent-Driven (im Plan empfohlen): pro Task frischer Subagent,
Review zwischen Tasks. Skill:
superpowers:subagent-driven-development. - Inline: alles in einer Session. Skill:
superpowers:executing-plans.
Besonderheiten beim Plan:
- Pipeline ist Blaupause für andere Nostr-Repos — keine Projekt-Konstanten im Code, alles via Env.
- Env-File: nutzt
../.env.local(Repo-Root), woBUNKER_URL,AUTHOR_PUBKEY_HEX,BOOTSTRAP_RELAYbereits stehen. - Blossom-only: keine rsync/SSH-Altlasten mehr; alle Bilder (auch die der 17 Altposts) werden zu Blossom hochgeladen.
- Staging:
staging.joerg-lohrer.dezeigt auf/www/htdocs/v109928/joerglohrer26/. Wird erst beim Cutover relevant — Pipeline selbst braucht es nicht.
Vorarbeiten (bereits erledigt):
- ✅ SSH-Zugang All-Inkl (Premium):
ssh-v109928@v109928.kasserver.commit Deploy-Key~/.ssh/id_ed25519_joerglohrerde_deploy(auch im KAS eingetragen). Wird jetzt allerdings nicht mehr für die Pipeline gebraucht — Blossom-only. - ✅
.env.localenthält alle Pipeline-Keys. - ✅ Content-Migration (18 Posts × Bild-Metadaten) abgeschlossen.
Option 2 — Menü-Navigation + Impressum auf der SPA
Warum: kleine UX-Ergänzung, die das SPA-Erlebnis runder macht.
- Header-Navigation in
app/src/routes/+layout.svelteergänzen (Home, Archiv, Impressum, evtl. Mastodon-Link) /impressum/-Route anlegen mit rechtlichem Text- ggf. Archives-Route als eigene Liste mit Gruppierung nach Jahr
Aufwand: ~30-60 min.
Option 3 — Cutover auf Hauptdomain
Voraussetzung: Option 1 abgeschlossen und alle 18 Posts als Events publiziert, Bilder auf Blossom.
Dann: KAS → Domain joerg-lohrer.de auf den SvelteKit-Webroot
umhängen (derselbe wie svelte.joerg-lohrer.de oder joerglohrer26/,
je nach Entscheidung).
Reihenfolge: Option 1 → Option 3, Option 2 kann parallel laufen.
Schnell-Orientierung für die nächste Claude-Session
Lies in dieser Reihenfolge:
docs/STATUS.md(5 min)docs/HANDOFF.md(= dieses Dokument)- Für die Pipeline:
docs/superpowers/plans/2026-04-16-publish-pipeline.md - Bei Design-Fragen:
- Publish-Pipeline:
docs/superpowers/specs/2026-04-15-publish-pipeline-design.md - Bild-Metadaten:
docs/superpowers/specs/2026-04-16-image-metadata-convention.md - SPA:
docs/superpowers/specs/2026-04-15-nostr-page-design.md
- Publish-Pipeline:
Nutze den Skill unter .claude/skills/joerglohrerde-workflow.md für
wiederkehrende Kommandos.
Dev-Kommandos
# Unit-Tests SPA (Vitest)
cd app && npm run test:unit
# E2E-Tests SPA (Playwright)
cd app && npm run test:e2e
# Type-Check SPA
cd app && npm run check
# SPA-Dev-Server (Port 5173)
cd app && npm run dev
# SPA-Production-Build + Deploy
cd app && npm run build && cd .. && ./scripts/deploy-svelte.sh
Publish-Pipeline-Kommandos (sobald implementiert):
cd publish && deno task check # Pre-Flight
cd publish && deno task publish --dry-run # Simulation
cd publish && deno task publish --post <slug> # einen Post
cd publish && deno task publish --force-all # alle Posts
cd publish && deno task test # Tests
Manuelles Publishen (Übergang, bis Pipeline fertig)
Siehe frühere Version dieses Dokuments. Bis die Pipeline läuft, gehen
neue Posts manuell über nak event raus.
Bekannte Stolperfallen
- Amber-Bunker: bei neuer Bunker-URL müssen globale Permissions in Amber
zurückgesetzt werden, sonst hängt
nakauf den Signatur-Request. Auto-Approve fürkind:30023undkind:24242(Blossom-Auth) setzen. - Svelte 5 Runes:
$props()-Werte müssen via$derived()in lokale Variablen, sonststate_referenced_locally-Warning. - applesauce-relay API: ist RxJS-basiert.
pool.request(relays, filter)returnedObservable<NostrEvent>(nicht die Tupel-subscribe({next: msg if msg[0]==='EVENT'})-Form). - Slug-Normalisierung: alle Frontmatter-Slugs sind lowercase (Commit
d17410f). Beim Publishen 1:1 übernehmen, keine Runtime-Transformation. - Dateiname mit Leerzeichen: im Moodle-Post liegt
03-config generieren.png. Pipeline muss URL-Encoding imrewriteImageUrls-Helper korrekt umsetzen (Test ist im Plan Task 5 vorgesehen).
Session-Kontext
Hilfreich beim Wiedereinstieg mit Claude:
- Branch-Check:
git log --oneline -10 spa main hugo-archive - Live-Check:
curl -sI https://svelte.joerg-lohrer.de/ - Publish-Status:
nak req -k 30023 -a 4fa5d1c413e2b45e10d40bf3562ab701a5331206e359c90baae0e99bfd6c6e41 wss://relay.damus.io 2>/dev/null | jq -s 'length'(aktuell ~10, nach Pipeline-Lauf--force-all: 18)
Offene UNKNOWN-Einträge zur späteren Recherche
Im VR-Post (content/posts/2021-08-15-virtual-reality/index.md)
sind 4 Bilder als license: UNKNOWN / authors: UNKNOWN markiert:
01-immersion-wikipedia.jpg(Wikipedia-Screenshot)02-mittelalterliche-kirche.jpg(Sketchfab — Lizenz ist CC BY-NC, Fotograf fehlt)03-avatare-erstellen.jpg(Ready Player Me)05-pupillendistanz.jpg(EyeMeasure iOS App)
Pipeline loggt beim Publishen eine Warnung pro UNKNOWN, publisht aber
trotzdem (Phase-1-Default: STRICT_MODE=false). Die Recherche-Todo-Liste
steht in docs/redaktion-bild-metadaten.md.
Community-Wiki-Entwürfe
Noch nicht extern veröffentlicht, liegen im Repo bereit:
docs/wiki-entwurf-nostr-bild-metadaten.md— DEdocs/wiki-draft-nostr-image-metadata.md— EN
Können in die Nostr-Community eingebracht werden (z. B. als NIP-Proposal oder auf nostrbook.dev), sobald die Pipeline sie in der Praxis validiert.