mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 17:41:09 +02:00
Erste nutzbare Versand-Schicht für wiederkehrende Forms (M10b).
Vollautomatisches Cron via mana-ai/mana-notify bleibt M10c — die
Owner-action-Pipeline funktioniert standalone und nutzt den
existierenden mailto:-Pfad als Bridge.
- types.ts: RecurrenceConfig erweitert um `recipientEmails?: string[]`
(max 50, mailto-URL-realistisch) und `lastSentAt?: string`.
- lib/wave.ts (pure):
- nextWaveDueAt(recurrence): lastSentAt + 7d (weekly) oder
+1 month UTC (monthly). Never-sent → startedAt oder Epoch.
- isWaveDue(recurrence, now): boundary-inclusive (= ist auch fällig).
- buildWaveMailto({recipients, subject, body}): URL-encoded
mailto:?bcc=...&subject=...&body=... Keine BCC wenn empty.
- parseRecipientEmails(raw): newline/comma/semicolon-getrennt,
Email-Regex-validiert, case-insensitive deduped (erste Casing
bleibt). Drops invalid silent.
- lib/wave.spec.ts: 20/20 grün — month-end-overflow, boundary-instant,
never-sent, dedup, mixed-separators.
- formsStore.markWaveSent(id, sentAt?): liest current settings,
patch-tt lastSentAt, encrypted-aware update (settings ist
encrypted-blob).
- SettingsPanel: bei aktiver recurrence Empfänger-Textarea (commit on
blur via parseRecipientEmails, slice 50, count-feedback) +
lastSent-Hint.
- BuilderView (visibility-section): wave-block mit fällig-Banner
(orange wenn isWaveDue) oder nextWaveAt-Hint, "Welle jetzt
senden"-Button (disabled bis recurrence + unlistedToken +
recipients alle stimmen). Click → confirm → buildWaveMailto +
window.open + markWaveSent. Subject + Body via i18n-Keys.
- 13 neue i18n-Keys × 5 Locales (recipientsLabel/Count, lastSent,
waveDue, nextWaveAt, sendNow, needsUnlisted/Recipients,
mailSubject/Body, confirmSend). Parity 6494.
Total Forms-Tests jetzt 61/61 (5 csv + 11 branching + 10 auto-sync +
15 cohort + 20 wave). svelte-check 0 errors.
Use-Case: Wöchentlicher Team-Pulse-Check. Recurrence='weekly' setzen,
3 Team-Emails ins Textarea, am Montag-Morgen das fällig-Banner
sehen, "Welle jetzt senden" → Mail-Programm öffnet sich mit
BCC-Liste + Share-Link. Antworten kommen mit cohort='2026-W19' rein,
ResponsesView gruppiert sie.
M10c open: Cron-Worker für headless wave-send via mana-mail
bulk-send. Owner-tab muss heute offen sein, damit der Send-Klick
fällt.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| api | ||
| calc/packages/shared | ||
| calendar | ||
| cards | ||
| chat | ||
| citycorners | ||
| contacts | ||
| docs | ||
| food | ||
| guides | ||
| inventory | ||
| mana | ||
| manavoxel | ||
| memoro | ||
| moodlit | ||
| mukke | ||
| news | ||
| photos | ||
| picture | ||
| plants | ||
| presi | ||
| questions | ||
| quotes/packages/content | ||
| skilltree | ||
| storage | ||
| times | ||
| todo | ||
| traces | ||
| uload | ||