Lädt kind:0-Metadata-Event des Autors parallel zur Beitragsliste und
zeigt Avatar, Anzeigename, About-Text, NIP-05 und Website oben auf
der Übersichtsseite. Einzelpost-Seiten bleiben fokussiert, ohne
Profil-Header.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Die produktive SPA soll Events wahrheitsgetreu darstellen und nicht
defensiv korrigieren. Daten-Anomalien (doppelte t-Tags etc.) bleiben
sichtbar, damit der Autor sie wahrnimmt. Bereinigung gehört in
separate Audit-Werkzeuge, nicht in die SPA-Renderlogik.
Der Mini-SPA-Spike dedup'te pragmatisch — explizit als Abweichung
vom Zielverhalten vermerkt.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- tagsAll() dedupliziert Werte (Schutz gegen Clients, die doppelte
t-Tags ins Event schreiben; real beobachtet bei einem existierenden
Post mit zweimal "relilab").
- Cover-Bild in der Einzelansicht auf max 480px Breite + zentriert,
damit es nicht die gesamte Viewportbreite füllt.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Liest dtag aus URL-Pfad (SPA-Navigation via History-API) und zeigt
Liste auf /, Einzelpost auf /<dtag>/. Interne Links ohne Reload,
Browser-Back funktioniert.
Streaming-Load via pool.subscribeMany: Events werden angezeigt,
sobald das erste Relay antwortet, statt auf alle 5 zu warten.
Deutlich bessere Reaktionszeit.
Liste mit Cover-Thumbnail links, Titel+Summary+Datum rechts.
Responsive: unter 480px stapelt sich Bild über Text.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Erklärung zur Implementierungstechnik als Intro-Box direkt unter dem
Tech-Spike-Banner (statt versteckt im Footer).
- Footer reduziert auf einen Link zum Quellcode.
- Mobile-Anpassungen: kleinerer Title auf < 640px, weniger Padding,
Tags wrappen sauber, lange URLs/Code/Tabellen brechen ohne Overflow.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tech-Spike unter preview/spa-mini/ — eine index.html, lädt
nostr-tools/marked/DOMPurify von esm.sh, holt das kind:30023-Event
mit dtag dezentrale-oep-oer von 5 public-relays, rendert clientseitig.
Beweist, dass die SPA-Architektur in der Praxis funktioniert, ohne
SvelteKit-Build-Pipeline.
Inhalt:
- index.html mit Loader, Renderer, Fehler-Handling
- .htaccess mit SPA-Fallback (relevant sobald gehostet)
- README mit Anleitung lokal/Deploy
.gitignore um .env*, logs/ ergänzt (für späteren Pipeline-Bedarf).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Häufige Sorge ("kann mein einfaches Webspace-Paket SvelteKit hosten?")
explizit beantwortet: SvelteKit mit adapter-static produziert reine
statische Dateien, exakt analog zu Hugos public/. Webspace, FTP und
.htaccess reichen vollständig — keine Node-Runtime, keine Datenbank,
kein vServer nötig.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Publish-Pipeline für den Weg Markdown → signiertes kind:30023 → Relays,
plus Bilder-Upload (Legacy: rsync zu All-Inkl für die 18 Altposts;
Blossom: BUD-01-Upload für neue Posts).
Kernpunkte:
- Deno-Runtime, gemeinsame Library und CLI für lokal + GitHub Action
- NIP-46 Bunker (Amber-Stufe, später Optiplex-Stufe ohne Code-Change)
- Relay- und Blossom-Server-Listen via kind:10002 / kind:10063
(manuell einmalig publiziert, identisch mit SPA-Nutzung)
- Git-Diff als Change-Detection, --force-all für Migration/Reimport
- State-los im Repo, keine Lock-Files, keine Commits zurück
- Pre-Flight `deno task check` validiert alle Voraussetzungen
Beziehung zur SPA-Spec: gemeinsame Event-Verträge (kind:30023, 10002,
10063) sind in dieser Spec normativ; SPA-Spec verweist darauf.
Publish läuft einmalig für die 18 Altposts (SPA-Migrationsschritt C)
vor dem SPA-Cutover (Schritt D).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Die Relay-Liste wird zur Laufzeit aus dem NIP-65-Outbox-Event geholt
(via Bootstrap-Relay), mit hartcodierter Fallback-Liste als Sicherheit.
Damit teilen SPA und Publish-Pipeline eine gemeinsame Quelle der
Wahrheit für Relay-Konfiguration — Änderungen erfordern nur ein neues
Event, keinen Code-Deploy.
Publish-Spec wird das normative Schema für kind:10002 und kind:10063
definieren; SPA-Spec verweist darauf.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Vereinheitlicht die slug-Frontmatter-Werte auf lowercase-Form, passend
zu den tatsächlich von Hugo erzeugten URLs (die lagen ohnehin schon
lowercase auf All-Inkl). Damit sind die slugs identisch mit den
späteren Nostr-d-Tags, keine Runtime-Normalisierung nötig.
7 Posts angepasst:
- Pflanzenschild-QR-Code → pflanzenschild-qr-code
- WordPress-Werkstatt → wordpress-werkstatt
- OB-virtualcam → ob-virtualcam
- Dampfnudeln → dampfnudeln
- BottomUp-MarkDown → bottomup-markdown
- 'KIBedenken - Bewusstsein' → kibedenken-bewusstsein
- 'Gemeinsam die Bildungszukunft gestalten: Dezentrale OEP und OER…' → dezentrale-oep-oer
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Letzter Commit vor Transition zu nostr-spa. Beinhaltet:
- neuer Post 2025-03-04-dezentrale-oep-oer (content + Hugo-Build)
- aktualisierte public/*.html nach Mastodon-Comment-Entfernung
- .claude/ als Transparenz-Spur der Sessions
- .DS_Store aus Index entfernt (bleibt ignoriert)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
SvelteKit-SPA, die Blog-Posts live aus signierten kind:30023-Events
von Public-Relays rendert. Ablösung der Hugo-Seite auf All-Inkl ohne
eigene Infrastruktur in Phase 1; Stubs, eigener Relay und Blossom als
Evolutionspfad.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>