Some checks failed
CI / Lint, typecheck, test (push) Successful in 3m41s
CD / Build and push images (push) Successful in 3m44s
CI / Build container images (push) Has been skipped
CD / Deploy to Test (push) Successful in 9s
CD / Smoke tests against Test (push) Successful in 1m18s
CD / Promote to Int (push) Successful in 11s
CI / Auth e2e pack (push) Failing after 2m53s
CI / Import/export fidelity gate (push) Has been skipped
New per-user digestFrequency (hourly default | daily | off) on the profile and in the settings UI. A scheduler job (15 min cadence) mails a user once their oldest unread, unmailed notification exceeds the cadence window: one localized mail per batch, grouped per pond then per page with actor names and change/comment counts, enqueued through the mail outbox. Sending marks the batch mailed — never read — and re-checks page read permission per entry at send time; entries the user can no longer read are dropped from the mail but still marked handled, so revoked content cannot queue forever. Every mail carries a signed, single-purpose unsubscribe link: it only flips the setting to off, renders a session-free confirmation page, and sets no cookie. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EwZ4jR4KFAPvpjWevfUGX1
47 lines
2.1 KiB
JSON
47 lines
2.1 KiB
JSON
{
|
|
"common": {
|
|
"greeting": "Hello {{displayName}},",
|
|
"signoff": "Your Dorfteich",
|
|
"ignoreHint": "If you did not request this e-mail, you can safely ignore it."
|
|
},
|
|
"verifyEmail": {
|
|
"subject": "Confirm your e-mail address",
|
|
"body": "welcome to Dorfteich! Please confirm your e-mail address to activate your account:",
|
|
"action": "Confirm e-mail address",
|
|
"expiry": "The link is valid for 24 hours."
|
|
},
|
|
"resetPassword": {
|
|
"subject": "Reset your password",
|
|
"body": "someone (hopefully you) requested a password reset for your account. Use this link to set a new password:",
|
|
"action": "Set new password",
|
|
"expiry": "The link is valid for one hour. Your current password stays valid until you set a new one."
|
|
},
|
|
"smtpTest": {
|
|
"subject": "SMTP test message",
|
|
"body": "this test message confirms that your Dorfteich can send e-mail through the configured SMTP server. You can reach your instance here:",
|
|
"action": "Open Dorfteich",
|
|
"expiry": "You can simply delete this e-mail."
|
|
},
|
|
"backupFailed": {
|
|
"subject": "[{{instance}}] Backup failed ({{backupId}})",
|
|
"intro": "The nightly backup run on {{instance}} failed.",
|
|
"backupId": "Backup id: {{backupId}}",
|
|
"error": "Error: {{error}}",
|
|
"lastSuccess": "Last successful backup: {{finishedAt}}",
|
|
"lastSuccessNever": "Last successful backup: none yet",
|
|
"hint": "Check the sidecar logs (docker compose logs backup) and status.json on the backups volume."
|
|
},
|
|
"digest": {
|
|
"subject": "Dorfteich: {{count}} updates for you",
|
|
"intro": "Here is what happened on pages you watch ({{count}} updates):",
|
|
"changes_one": "{{count}} change",
|
|
"changes_other": "{{count}} changes",
|
|
"comments_one": "{{count}} comment",
|
|
"comments_other": "{{count}} comments",
|
|
"openApp": "Open Dorfteich: {{link}}",
|
|
"unsubscribe": "Stop these digest mails: {{link}}",
|
|
"unsubscribedTitle": "Digest mails disabled",
|
|
"unsubscribedBody": "You will no longer receive notification digests. You can re-enable them anytime in your account settings after signing in."
|
|
}
|
|
}
|