joerglohrerde/publish
Jörg Lohrer db61149924 publish(tasks 19+20): signer-stabilisierung für wiederholte runs
probleme auf der realen amber-infrastruktur behoben:

1. ohne festen CLIENT_SECRET_HEX erzeugt applesauce bei jedem lauf einen
   neuen client-pubkey. amber bindet permissions pro client-pubkey, also
   sah jeder lauf wie eine neue unberechtigte app aus und bekam
   "no permission" als auto-antwort.
   → CLIENT_SECRET_HEX in config + cli, SimpleSigner.fromKey durchgereicht.

2. applesauce wirft bei "already connected"/"no permission" unhandled
   rejections, weil response-promises asynchron reagieren.
   → globaler unhandledrejection-handler, der diese benannten fehler
   schluckt; connect() im try/catch mit open+force als fallback.

3. timeout auf bunker connect auf 60s erhöht (amber-pairing kann
   menschliches tap dauern beim ersten mal).

einzel-post-publish live verifiziert:
- offenheit-das-wesentliche als kind:30023 publiziert
- alle 5 write-relays haben bestätigt
- bild auf beide blossom-server hochgeladen
- SPA rendert das bild von blossom.edufeed.org

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-18 06:42:28 +02:00
..
src publish(tasks 19+20): signer-stabilisierung für wiederholte runs 2026-04-18 06:42:28 +02:00
tests publish(task 17): validate-post-subcommand 2026-04-18 05:40:29 +02:00
.env.example publish(task 1): deno-grundgerüst (deno.jsonc, .env.example, readme) 2026-04-18 05:20:19 +02:00
.gitignore publish(tasks 19+20): signer-stabilisierung für wiederholte runs 2026-04-18 06:42:28 +02:00
README.md publish(task 1): deno-grundgerüst (deno.jsonc, .env.example, readme) 2026-04-18 05:20:19 +02:00
deno.jsonc publish(task 11): image-collector (ignoriert hugo-derivate) 2026-04-18 05:31:32 +02:00

README.md

publish — Nostr-Publish-Pipeline

Markdown-Posts aus einem Hugo-ähnlichen Content-Ordner zu kind:30023-Events, Bilder zu Blossom, Signatur via NIP-46-Bunker.

Blaupause für Nostr-Repos: keinerlei Projekt-Konstanten im Code, alles über Env-Variablen konfigurierbar.

Setup

  1. cp .env.example .env und Werte eintragen.
  2. Oder: .env.local im Eltern-Ordner pflegen und deno.jsonc anpassen (siehe --env-file=../.env.local-Tasks).
  3. deno task check — verifiziert Bunker, Relay-Liste, Blossom-Server.

Befehle

  • deno task publish — Git-Diff-Modus: publisht nur geänderte Posts.
  • deno task publish --force-all — alle Posts (Migration / Reimport).
  • deno task publish --post <slug> — nur ein Post.
  • deno task publish --dry-run — zeigt, was publiziert würde, ohne Uploads.
  • deno task validate-post content/posts/<ordner>/index.md — Frontmatter-Check.
  • deno task test — Tests.

Struktur

  • src/core/ — Library (Frontmatter, Markdown, Events, Signer, Relays, Blossom).
  • src/subcommands/ — CLI-Befehle.
  • src/cli.ts — Entrypoint, Subcommand-Dispatcher.
  • tests/ — Unit- und Integration-Tests.
  • .github/workflows/publish.yml — CI-Workflow.