postcards: "no specific addressee" / broadcast mode (one card, share with many) #4
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
m wants a postcard that is not bound to a specific recipient — a broadcast/general card with ONE shareable link he can send to many people at once. Verbatim: "Postkarten ohne bestimmten Adressaten, sodass ich mehreren dieselbe Karte schicken kann."
Technically the
/c/{token}link is already forwardable to many — but m wants this as an explicit, clear choice in the compose flow so the UX doesn't imply a 1:1 card.Asks
Natural combo with #3 (custom URL)
A broadcast card + a custom memorable slug (e.g.
post.msbls.de/sardinien2026) is the obvious pairing — one memorable link for everyone. Build the two coherently.Constraints
noindexstays.audiencesingle|broadcast, or reuse a nullable recipient), add via idempotent migration; verify against msupabase as the postgres role (not supabase_admin) — see #1/#2 schema-ownership note.Sequencing
Folded into the #3 shift (same worker, same compose/addressee/URL code) — see the worker instruction. Filed separately for the record; otto-head will close out both on merge.
DoD
#4 umgesetzt — Broadcast-Modus („zum Teilen / an mehrere“)
Gemeinsam mit #3 auf demselben Branch gebaut (otto-head-Instruktion).
Was:
recipient_nameserverseitig für Broadcast-Karten (auch ohne JS sicher). Beim Rendern wird keine „Für …“-Zeile gezeigt; das Share-Banner formuliert „Diesen Link kannst du mit allen teilen“.audience=single|broadcast,NormalizeAudiencenormalisiert auf Lesen und Schreiben → alte Zeilen bleibensingle).Kombi mit #3: Broadcast-Karte + Wunsch-Slug = ein merkbarer Link für alle (z. B.
post.msbls.de/sardinien2026) — genau m's mentales Modell.Verifikation: im selben e2e-Lauf wie #3 — Broadcast-Flip-Karte mit Slug: Pretty-URL + „mit allen teilen“-Banner, keine to-line,
audience=broadcastgespeichert. Template-Render-Test prüft Broadcast-Banner + dass die Radios bei Prefill korrektcheckedsind. build/vet/test/gofmt grün.Mobile-first, deutsch + Umlaute,
noindexbleibt.Commit: https://mgit.msbls.de/m/postcards/commit/2f0c9b6 (referenziert #3 und #4)
Branch:
mai/hermes/issue-3-postcards-custom✅ Live on https://post.msbls.de
Merged in
408b276, deployed. Compose now offers an explicit audience choice (an eine Person / zum Teilen — broadcast); broadcast cards drop the specific-recipient framing. Migration 003 added theaudiencecolumn (owner-preserving). Verified a broadcast card creates + renders (HTTP 200). Pairs with the #3 custom slug for one memorable shareable link. Not closing — m closes.