Add opt-in Daily Digest (daily email of last 24h of library recaps)
Multi-mode, off by default. Each new recap is synthesized into a 1-2 paragraph overview via the relay (operator-absorbed) and cached onto the session JSON; a daily 08:00 scan emails opted-in users their fresh recaps, deduped by a per-user watermark that never skips a failed or over-cap recap. One-click tokenized unsubscribe; settings-modal toggle; admin test trigger. Bumps to 0.2.158.
This commit is contained in:
@@ -264,6 +264,15 @@ if (RECAP_MODE === "multi") {
|
||||
// public URL + relay being configured, so it's a safe no-op until then.
|
||||
const { startReminderScheduler } = await import("./subscription-reminders.js");
|
||||
startReminderScheduler();
|
||||
// Daily Digest: opt-in (off by default) once-a-day email of a user's
|
||||
// last ~24h of library recaps. Same self-gating shape as reminders —
|
||||
// no-op until SMTP + public URL are set. The one-click unsubscribe GET
|
||||
// is public (whitelisted in tenant-auth) since the email has no session.
|
||||
const { startDigestScheduler, setupDigestRoutes } = await import(
|
||||
"./daily-digest.js"
|
||||
);
|
||||
setupDigestRoutes(app);
|
||||
startDigestScheduler();
|
||||
|
||||
// /api/account/whoami — frontend hits this on every page load to
|
||||
// determine which UI state to render:
|
||||
|
||||
Reference in New Issue
Block a user